通常,通过检查Accept-Encoding请求标头,可以检测是否请求了压缩。 Google App Engine会删除此标题。有没有其他方法来检测这种事情?我想知道GAE是否会在发送之前压缩特定的响应。
答案 0 :(得分:2)
GAE does this automatically,您无需在应用中担心:
Google App Engine尽力为浏览器提供gzip压缩内容 支持它。利用这种方案是自动的 不需要修改应用程序。
我们使用请求标头的组合(Accept-Encoding,User-Agent) 和响应头(Content-Type)来判断是否 最终用户可以利用gzip压缩内容。这种方法避免了 一些着名的bug在流行的浏览器中使用gzip压缩内容。至 迫使gzipped内容服务,客户可以提供' gzip'作为 Accept-Encoding和User-Agent请求标头的值。 如果不存在Accept-Encoding标头,则永远不会对内容进行gzip压缩。
可以在GAE应用程序的实际消息上检查标题(仅在生产环境中,开发服务器不会执行压缩)。我看到了(在firefox中):
根据要求:
接受编码:" gzip,deflate"
回复:
Content-Enconding:" gzip"
答案 1 :(得分:0)
我目前的解决方案是使用其他服务器来检测压缩。
我已将网页分成初始化存根和内容。存根包括一个位,使浏览器仅向压缩检测请求第三方服务器。如果通过,则会加载并注入内容。
这不是最佳选择,但它确实有效,并且在不对用户产生重大影响的情况下,从不负责任的机器人那里减少了流量。
编辑:我可能会从客户端推断出这一点。使用AJAX并检查Content-Encoding
的{{1}}响应头将意味着GAE认为客户端需要压缩,这意味着客户端要求压缩。
gzip