2013-09-24 111 views
5

Tôi đang cố gắng phân phối các tệp gzip từ amazon s3. Đây là settings.py của tôi:Máy nén Django sử dụng gzip để phục vụ 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' 

Khi tôi làm django điều này tạo ra tập tin * gz cho mỗi * .js và * .css nén nhưng kỳ lạ chỉ có file * .css được phục vụ như gzip. Tôi có thể thấy trên aws s3 rằng các tệp .css có mã hóa Nội dung: gzip và * .js thì không. Chuyện gì đang xảy ra ở đây?

+0

Tôi có thể hỏi lý do bạn xác định 'COMPRESS_STORAGE' hai lần? –

+0

@MarcusLind Tôi đã chỉnh sửa câu hỏi. cảm ơn vì cuộc gọi –

Trả lời

4

tôi đã cùng một vấn đề và đã có thể giải quyết điều này bằng cách thêm text/javascript để thiết lập GZIP_CONTENT_TYPES như vậy:

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

Tôi không chắc chắn lý do tại sao, nhưng giá trị mặc định của GZIP_CONTENT_TYPES trong django-storages==1.1.8 dường như không bao gồm text/javascript để có vẻ như django-compressor bỏ qua GZIP cho các tệp .JS được nén với loại nội dung này.

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