В настоящее время я использую компрессоры django и хранилища django для запуска статического медиафайла s3. Мои файлы следующим образом:Django Compressor with S3 URL 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',
]
Существует много средств массовой информации для сжатия, который почему я выбрал использовать автономное сжатие и запустить команду manage.py compress, а не запускать collectstatic при перезагрузке dyno, поскольку она просто замедляется.
Компрессор Django предоставляет мне строку с запросом, но она содержит html, который не загружается. т.е.
<link rel="stylesheet" href="site-url/static/CACHE/css/da0c0fa8dd51.css?Signature=Signature&Expires=Expires&AWSAccessKeyId=key
два усилителя; предметов не должно быть. Я бы предпочел, чтобы это было безопасно, но я также попробовал AWS_S3_SECURE_URLS = False в настройках, которые, похоже, не меняют вещи, что заставляет меня думать, что что-то не так.
Я использую django 1.4, поэтому, возможно, есть что-то несовместимое.
Это кажется, что работает команда компресс не переделывать файл манифеста. Поэтому до тех пор, пока вы отключите защищенные URL до этого, все должно быть в порядке. Сначала я попробую и подтвержу. – Crazyconoli