在GAE中检测压缩?

时间:2016-01-14 02:16:52

标签: google-app-engine

通常,通过检查Accept-Encoding请求标头,可以检测是否请求了压缩。 Google App Engine会删除此标题。有没有其他方法来检测这种事情?我想知道GAE是否会在发送之前压缩特定的响应。

2 个答案:

答案 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