FishHook
А какие проблемы с картинками, они же не изменяются.
Спасибо, попробовал этот компрессор. Вроде бы работает, но все равно есть пару вопросов:
1. Сейчас при collectstatic вся статика копируется на S3, хотя js и css нет смысла копировать, так как они собираются в один файл компрессором
2. Где djnago-compressor хранит хэши своих файлов, я так понял в мемкеше? Если да то как быть с тем, если приложение работает на 3 серверах через лоад балансер?
Настройки следующие:
settings.pyAWS_ACCESS_KEY_ID = '***************'
AWS_SECRET_ACCESS_KEY = '******************'
AWS_STORAGE_BUCKET_NAME = '******'
COMPRESS_ENABLED = True
AWS_S3_CUSTOM_DOMAIN = '************.cloudfront.net'
STATIC_URL = 'https://{0}/assets/'.format(AWS_S3_CUSTOM_DOMAIN)
COMPRESS_OFFLINE = True
COMPRESS_URL = STATIC_URL
COMPRESS_ROOT = STATIC_ROOT
COMPRESS_STORAGE = 'CachedS3BotoStorage.CachedStaticS3BotoStorage'
STATICFILES_STORAGE = COMPRESS_STORAGE
AWS_HEADERS = {
'Expires': 'Thu, 31 Dec 2099 20:00:00 GMT',
'Cache-Control': 'max-age=94608000',
}
COMPRESS_OUTPUT_DIR = ''
CachedS3BotoStorage.pyfrom 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
CachedStaticS3BotoStorage = lambda: CachedS3BotoStorage(location='assets')