5

我正在尝试从 amazon s3 提供 gzip 文件。这是我的settings.py:

AWS_IS_GZIPPED = True
AWS_PRELOAD_METADATA = True 
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_STORAGE_BUCKET_NAME = 'elasticbeanstalk-eu-west-1-2051565523'
STATIC_URL = 'https://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME
COMPRESS_OFFLINE = True
COMPRESS_ENABLED = True
COMPRESS_URL = STATIC_URL
COMPRESS_CSS_FILTERS = [
    'compressor.filters.css_default.CssAbsoluteFilter',
    'compressor.filters.cssmin.CSSMinFilter'
]
COMPRESS_JS_FILTERS = [
    'compressor.filters.jsmin.JSMinFilter',
]
COMPRESS_STORAGE = 'compressor.storage.GzipCompressorFileStorage' 

当我这样做时,django 为每个 *.js 和 *.css 压缩创建 *.gz 文件,但奇怪的是只有 *.css 文件作为 gzip 提供。我可以在 aws s3 上看到 .css 文件具有 Content-Encoding: gzip 而 *.js 没有。这里发生了什么?

4

1 回答 1

4

我有同样的问题,并且能够通过添加text/javascript到这样的GZIP_CONTENT_TYPES设置来解决这个问题:

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

我不确定为什么,但GZIP_CONTENT_TYPESin的默认值django-storages==1.1.8似乎不包括在内text/javascript,因此对于具有此内容类型的压缩 .JS 文件,它似乎django-compressor跳过了 GZIP。

见:http ://code.larlet.fr/django-storages/src/e27c8b61ab57e5afaf21cccfee005c980d89480f/storages/backends/s3boto.py?at=default#cl-236

于 2013-10-01T19:37:35.733 回答