현재 s3에서 정적 미디어를 실행하려면 django 압축기와 django 저장 장치를 사용하고 있습니다. 다음과 같이 내 파일은 : 워드 프로세서에 따라S3 URL을 가진 Django 압축기 Heroku
내 저장입니다 :
from django.core.files.storage import get_storage_class
from storages.backends.s3boto import S3BotoStorage
class CachedS3BotoStorage(S3BotoStorage):
"""
S3 storage backend that saves the files locally, too.
"""
def __init__(self, *args, **kwargs):
super(CachedS3BotoStorage, self).__init__(*args, **kwargs)
self.local_storage = get_storage_class(
"compressor.storage.CompressorFileStorage")()
def save(self, name, content):
name = super(CachedS3BotoStorage, self).save(name, content)
self.local_storage._save(name, content)
return name
내 설정
은 다음과 같습니다 압축하는 미디어의 많은# S3 Storage Section
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
STATICFILES_STORAGE = DEFAULT_FILE_STORAGE
AWS_ACCESS_KEY_ID = os.environ['AWS_ACCESS_KEY_ID']
AWS_SECRET_ACCESS_KEY = os.environ['AWS_SECRET_ACCESS_KEY']
AWS_STORAGE_BUCKET_NAME = os.environ['AWS_STORAGE_BUCKET_NAME']
# AWS_S3_SECURE_URLS = False #turns off https for static files (necessary)
# Used to make sure that only changed files are uploaded with collectstatic
AWS_PRELOAD_METADATA = True
# Django compressor settings
STATICFILES_FINDERS += (
'compressor.finders.CompressorFinder',
)
COMPRESS_ENABLED = True
COMPRESS_OFFLINE = True
COMPRESS_URL = STATIC_URL
COMPRESS_ROOT = STATIC_ROOT
COMPRESS_STORAGE = 'erp.storage.CachedS3BotoStorage'
STATICFILES_STORAGE = 'erp.storage.CachedS3BotoStorage'
AWS_LOCATION = 'static'
AWS_QUERYSTRING_EXPIRE = 7200
COMPRESS_JS_FILTERS = [
'compressor.filters.template.TemplateFilter',
]
이 내가 선택한 이유입니다 오프라인 압축을 사용하고 dyno 재시작시 collectstatic을 실행하는 대신 manage.py compress 명령을 실행하는 것이 느려지는 것입니다.
Django 압축기는 쿼리 문자열을 제공하지만 위의 HTML에는로드되지 않는 html이 포함되어 있습니다. 즉
<link rel="stylesheet" href="site-url/static/CACHE/css/da0c0fa8dd51.css?Signature=Signature&Expires=Expires&AWSAccessKeyId=key
2 개의 amp; 항목이 없어야합니다. 차라리 안전 할 것이지만 AWS_S3_SECURE_URLS = False로 설정을 변경해도 문제가없는 것으로 생각됩니다.
저는 django 1.4를 사용하고 있습니다. 어쩌면 호환되지 않는 무언가가있을 수 있습니다.
을 방지하기 위해 settings.py에 AWS_QUERYSTRING_AUTH = False를 사용할 수 있습니다. 따라서 보안 URL을 사용 중지하기 전에 보안 URL을 해제해야합니다. 먼저 해보고 확인해 보겠습니다. – Crazyconoli