【发布时间】:2015-10-27 02:13:00
【问题描述】:
我正在尝试使用带有 S3 的 django 优化我的静态文件。我正在使用 django 压缩器来压缩和缓存 js 和 css 文件。 这是我的设置:
AWS_ACCESS_KEY_ID = access_key
AWS_SECRET_ACCESS_KEY = secret_key
AWS_STORAGE_BUCKET_NAME='mybucketname'
AWS_QUERYSTRING_AUTH = False
S3_URL = 'https://%s.s3.amazonaws.com/' %AWS_STORAGE_BUCKET_NAME
MEDIA_URL = S3_URL + "media/"
STATIC_URL = S3_URL + "static/"
ADMIN_MEDIA_PREFIX = STATIC_URL + "admin/"
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static","static_dirs"),
#'/var/www/static/',
)
AWS_HEADERS = {
'Cache-Control': 'public,max-age=86400',
}
STATIC_ROOT = os.path.join(BASE_DIR, "static","static_root")
STATICFILES_STORAGE = 'lafabrique.settings.s3utils.CachedS3BotoStorage'
DEFAULT_FILE_STORAGE = 'lafabrique.settings.s3utils.MediaRootS3BotoStorage'
COMPRESS_STORAGE = 'lafabrique.settings.s3utils.CachedS3BotoStorage'
COMPRESS_URL = S3_URL
在另一个文件中:
class CachedS3BotoStorage(S3BotoStorage):
def __init__(self, *args, **kwargs):
super(CachedS3BotoStorage, self).__init__(*args, **kwargs)
self.local_storage = get_storage_class(
"compressor.storage.GzipCompressorFileStorage")()
def save(self, name, content):
name = super(CachedS3BotoStorage, self).save(name, content)
self.local_storage._save(name, content)
return name
我不明白的是,当我在https://developers.google.com/speed/pagespeed/insights/ 上测试我的页面时,谷歌仍然告诉我应该使用 gzip 并缓存在我的静态文件上...... 同样在我的亚马逊 http 响应中,我得到:Cache-Control:max-age=0 ...(实际网站是 lafabrique.io,以防万一)
有人知道我做错了什么吗? 非常感谢
【问题讨论】:
标签: python django heroku amazon-s3 compression