gzip没有和Whitenoise一起在Django工作

时间:2015-08-04 12:04:28

标签: django heroku gzip django-wsgi

我在Heroku上部署了一个Django网站,使用Whitenoise提供静态文件。

静态文件工作正常,但Gzip根据我用来测试它的各种网站(包括谷歌工具)不起作用。

这是我的生产设置文件中的代码:

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

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

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

我的静态文件配置:

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)

我的wsgi.py文件

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=/

可能是什么原因?

我在评论中提出了一些命令,看起来像gzip不能正常工作:

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

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

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

li

2 个答案:

答案 0 :(得分:1)

应该有问题

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

  

如果满足以下任何条件,则不会压缩内容:

     

内容主体长度小于200个字节。回应已经有了   设置Content-Encoding标头。请求(浏览器)尚未发送   包含gzip的Accept-Encoding标头。您可以申请GZip   使用gzip_page()装饰器压缩到各个视图。

答案 1 :(得分:1)

WhiteNoise仅为您的静态文件启用gzip,而不是为整个站点启用gzip,因此您需要检查一个静态文件,例如

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