与Django合作后,我发现人们倾向于建议使用GZIP Middleware来压缩HTML网页。
然而,WSGI v1.0 specification告诉我们:
(注意:应用程序和中间件不得将任何类型的
Transfer-Encoding
应用于其输出,例如分块或gzipping;作为“逐跳”操作,这些编码是实际的Web服务器/网关的省份。有关详细信息,请参阅下面的Other HTTP Features。)
这表明压缩应留给服务器/网关。这是有道理的,因为服务器可能要快得多。此外,它可能比gzip更喜欢SDCH,因为大多数现代Chrome / Chromium浏览器都支持它。
所以我的问题仍然存在,我是否应该使用中间件压缩我的回复?具体来说,Google App Engine的正确选择是什么?
修改
Pylons Book还包含example gzip middleware。
我没有提到我的选择框架是Pyramid(ex-repoze.bfg)。
答案 0 :(得分:8)
App Engine already does压缩内容(如果客户支持)。
如果客户端发送HTTP标头 请求表明客户端 可以接受压缩(gzipped) 内容,App Engine压缩 自动响应数据 附上适当的回应 头。它同时使用了 Accept-Encoding和User-Agent请求 用于确定客户端是否可以的标头 可靠地接收压缩响应。 自定义客户端可以强制内容 通过指定两者来压缩 Accept-Encoding和User-Agent标头 值为“gzip”。