gzip не работает в Django с Whitenoise

у меня есть сайт Django, развернутый на Heroku, используя Whitenoise для обслуживания статических файлов.

статические файлы работают нормально, но Gzip не работает в соответствии с различными веб-сайтами, которые я использовал для его тестирования (включая инструменты google).

это код в моих файлах производственных настроек:

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


SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

ALLOWED_HOSTS = ['*']

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'

конфигурация моих статических файлов:

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

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

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

мой wsgi.py файл

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)

что может быть причиной?

Я выполнил несколько команд, предложенных в комментариях, похоже, gzip не работает:

~ ~ 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

2 ответов


WhiteNoise включен только gzip для ваших статических файлов, а не для всего вашего сайта, поэтому вам нужно проверить один из ваших статических файлов e.g

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

должна быть проблема

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

Он не будет сжимать содержимое, если любое из следующих условий:

тело содержимого длиной менее 200 байт. Ответ уже установите заголовок Content-Encoding. Запрос (браузер) не отправлен заголовок Accept-Encoding, содержащий gzip. Вы можете применить GZip сжатие до отдельных видов использование декоратора gzip_page ().