【问题标题】:Django with S3 staticfiles optimization具有 S3 静态文件优化的 Django
【发布时间】: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


    【解决方案1】:

    你在使用 Django-storages 吗?尝试将此添加到您的设置中:

    AWS_IS_GZIPPED = True
    GZIP_CONTENT_TYPES = (
     'text/css',
     'application/javascript',
     'application/x-javascript',
     'text/javascript'
    )
    

    您似乎在本地计算机上使用 gzipped 存储,但不是用于您上传到 S3 的文件。

    对于缓存问题,请在此处尝试解决方案:Trouble setting cache-cotrol header for Amazon S3 key using boto

    【讨论】:

    • 感谢 SMX,您解决了我的 GZIP 问题!但是我没有在您的链接中找到关于缓存的正确答案
    • 尝试从链接页面的第一个答案中复制设置行——我遇到了类似的问题,并为我解决了这个问题。
    猜你喜欢
    • 2016-12-22
    • 2020-11-23
    • 2021-06-19
    • 2013-10-06
    • 2021-07-07
    • 2013-06-06
    • 1970-01-01
    • 2013-01-24
    • 2016-11-22
    相关资源
    最近更新 更多