如何在谷歌应用引擎上获得gzip或brotli编码



谷歌应用程序引擎允许压缩结果吗?例如,我有以下卷曲请求:

$ curl --location --request GET 'https://premiere-stage2.uk.r.appspot.com/' 
> --header 'Accept-Encoding: gzip, deflate, br'

并且响应没有被压缩。将其与以下内容进行比较:

$ curl --location -X GET 'https://google.com' --header 'Accept-Encoding: gzip, deflate, br'
Warning: Binary output can mess up your terminal. Use "--output -" to tell
Warning: curl to output it to your terminal anyway, or consider "--output
Warning: <FILE>" to save to a file.

或者,我需要设置一些手册吗?我认为最后的办法是在应用程序端点本身进行压缩,或者需要这样做吗?

在评论中对John Hanley的建议进行了扩展,分为两部分。

  1. 您必须在请求中设置Accept-Encoding标头
  2. 其次,响应本身应该具有正确的内容或mime类型,如text/html或任何需要的类型。如果mime类型不在某个列表中,web服务器通常会忽略压缩
  3. 第三,为了确保请求和响应中的头都是正确的,可以在curl中使用-v标志
  4. 最后,似乎内容需要超过一定的大小,web服务器才能对其进行压缩。因此,例如,如果内容长度为3,则不会对它进行压缩,尽管我不确定这到底是什么

将其整合在一起:

$ curl --location --request GET 'https://premiere-stage2.uk.r.appspot.com/html' 
--header 'Accept-Encoding: gzip, deflate, br' 
-v

参考文献:

  • 卷曲
  • GAE(有点被埋没了,在Go文档下面(

根据文件

例如,服务器可能会根据Accept-Encoding请求标头的值自动发送gzipped响应。应用程序本身不需要知道客户端可以接受哪些内容编码。

这给人的印象应该如此。但同样的文件也说

此外,以下标头将从传入请求中删除,因为它们与客户端和服务器之间的HTTP数据传输有关:

  • 接受编码

我针对我们的生产站点进行了测试,在FireFox中,Web Developer Tool将Accept-Encoding: gzip, deflate, br显示为content-encoding: gzip的请求标头和响应标头

然而,当我针对我们网站的local/dev进行测试时,WebDeveloperTool将Accept-Encoding: gzip, deflate, br显示为请求标头,但响应标头不包括content-encoding: gzip。此外,在Flask/Python中打印标题,为Accept-Encoding提供了值None

相关内容

  • 没有找到相关文章

最新更新