2013-09-24 301 views
5

我想從亞馬遜s3服務gzip文件。 這是我的settings.py:Django壓縮器使用gzip服務javascript

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壓縮但奇怪的只有* .css文件都擔任gzip的。我可以在aws s3上看到.css文件具有Content-Encoding:gzip和* .js不包含。這裏發生了什麼?

+0

我可以問你爲什麼定義'COMPRESS_STORAGE'兩次? –

+0

@MarcusLind我編輯了這個問題。感謝您的電話 –

回答

4

我有同樣的問題,並能解決這個加text/javascriptGZIP_CONTENT_TYPES設置像這樣:

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

我不知道爲什麼,但GZIP_CONTENT_TYPESdjango-storages==1.1.8的默認值似乎並不包括text/javascript,所以它似乎django-compressor跳過GZIP壓縮.JS文件與此內容類型。

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