谷歌应用程序引擎允许压缩结果吗?例如,我有以下卷曲请求:
$ 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的建议进行了扩展,分为两部分。
- 您必须在请求中设置
Accept-Encoding
标头 - 其次,响应本身应该具有正确的内容或mime类型,如
text/html
或任何需要的类型。如果mime类型不在某个列表中,web服务器通常会忽略压缩 - 第三,为了确保请求和响应中的头都是正确的,可以在curl中使用
-v
标志 - 最后,似乎内容需要超过一定的大小,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