2015-08-04 16 views
7

Tôi có một trang web Django được triển khai trên Heroku, sử dụng Whitenoise để phục vụ các tệp tĩnh.gzip không hoạt động ở Django với Whitenoise

Các tệp tĩnh hoạt động tốt nhưng Gzip không hoạt động theo các trang web khác nhau mà tôi đã sử dụng để kiểm tra nó (bao gồm các công cụ của google).

đây là mã trong các tập tin thiết lập sản xuất của tôi:

DATABASES['default'] = dj_database_url.config() 


SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') 

ALLOWED_HOSTS = ['*'] 

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage' 

file tĩnh của tôi cấu hình:

BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 

STATIC_URL = '/static/' 
STATIC_ROOT = 'staticfiles' 

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"), 
) 

tập tin wsgi.py tôi

import os 

from django.core.wsgi import get_wsgi_application 

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "sikumim.settings") 

application = get_wsgi_application() 

#HEROKU DEPLOYMENT 

from whitenoise.django import DjangoWhiteNoise 
application = DjangoWhiteNoise(application) 

nguyên nhân có thể là gì?

Tôi chạy một vài lệnh gợi ý trong các ý kiến, trông giống như gzip không hoạt động:

➜ ~ curl -I -H "Accept-Encoding: gzip" http://127.0.0.1:8000/

HTTP/1.0 200 OK 
Date: Mon, 17 Aug 2015 13:56:02 GMT 
Server: WSGIServer/0.2 CPython/3.4.0 
X-Frame-Options: SAMEORIGIN 
Vary: Cookie 
Content-Type: text/html; charset=utf-8 
Set-Cookie: csrftoken=SsgKEp76HDhG5L7otWxqBJeMyb00Vp03; expires=Mon,  15-Aug-2016 13:56:02 GMT; Max-Age=31449600; Path=/ 

➜ ~ curl -I -H "Accept-Encoding: gzip" http://www.sikumia.co.il

HTTP/1.1 200 OK 
Connection: keep-alive 
Server: gunicorn/19.3.0 
Date: Mon, 17 Aug 2015 13:57:37 GMT 
Transfer-Encoding: chunked 
X-Frame-Options: SAMEORIGIN 
Vary: Cookie 
Content-Type: text/html; charset=utf-8 
Set-Cookie: csrftoken=23M5ODiFKRnU3fDYMe3j2Rn3dwtCsNMX; expires=Mon, 15-Aug-2016 13:57:37 GMT; Max-Age=31449600; Path=/ 
Via: 1.1 vegur 
+0

công cụ hiểu biết trang Google nói rằng gzip không hoạt động, cũng tất cả các công cụ khác đang nói cùng một điều – davegri

+0

Hai câu hỏi - 1) là bạn đang kiểm tra cục bộ với curl (ví dụ: 'curl -i -H" Accept-Encoding: gzip "http: // localhost: 8000/path/to/static' và 2) bạn chạy ứng dụng trong Procfile như thế nào? Tôi đã nhận được gzip làm việc với 'gunicorn', nhưng không phải với' runserver' (không phải là cấu hình sản xuất của bạn). – bimsapi

+0

Tôi xin lỗi tôi là một chút của một newbie, tôi đang chạy các ứng dụng trên heroku. chỉ có một dòng trong tập tin của tôi: web: gunicorn sikumim.wsgi Tôi sẽ thử lệnh curl – davegri

Trả lời

1

nhiễu trắng chỉ kích hoạt gzip cho các tập tin tĩnh của bạn, chứ không phải cho toàn bộ trang web của bạn, vì vậy bạn cần phải kiểm tra một trong các file tĩnh của bạn ví dụ như

curl -I -H "Accept-Encoding: gzip" http://www.sikumia.co.il/static/some-file.css 
1

Nên có vấn đề

https://docs.djangoproject.com/en/1.8/ref/middleware/#gzip-middleware

Nó sẽ KHÔNG nén nội dung nếu bất kỳ điều nào sau đây là đúng:

Cơ thể nội dung có chiều dài nhỏ hơn 200 byte. Câu trả lời đã được đặt tiêu đề Mã hóa nội dung. Yêu cầu (trình duyệt) chưa gửi tiêu đề Accept-Encoding chứa gzip. Bạn có thể áp dụng nén GZip cho các chế độ xem riêng lẻ bằng cách sử dụng trình trang trí gzip_page().

Các vấn đề liên quan