版权属于:
桑帅东的博客
作品采用:
《
署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
》许可协议授权
最近在做拟态开发过程中,遇到lua脚本响应PHP返回接口的数据乱码问题,通过postman调试发现响应头部Content-Encoding算法为gzip,而其他接口如python则没有这个设置。
Accept-Encoding 和Content-Encoding是HTTP中用来对采用哪种编码格式传输正文进行协定的一对头部字段。
工作原理如下:
浏览器在拿到响应正文后,依据Content-Encoding进行解压。
服务端也可以返回未压缩的正文,但这种情况不允许返回Content-Encoding
内容编码的目的是优化传输内容的大小,通俗的讲就是尽心压缩。一般经过gzip压缩过的文本响应,只有原始大小的1/4(这个数据我现在还不确定)。对于文本类响应是否开启了内容压缩,是我们做性能优化时首先要检查的重要项目;而对于JPG/PNG这类本身已经高度压缩过的二进制文件,不推介开启内容压缩,效果几乎微乎其微,还浪费cpu
内容的编码针对的只是传输正文。在HTTP/1中,头部始终是以ASCII文本传输,没有经过任何压缩。不过这个问题在HTTP/2中已经解决,详见HTTP/2 头部压缩技术介绍
内容编码使用特别广泛,理解起来也特别简单,但是要注意的是不要把它与HTPP中的另外一个概念:传输编码Transfer-Encoding搞混即可。
开始之前,先来介绍三种数据压缩格式:
在nginx.conf文件中 找到gzip 默认是on开启状态,改为off表示关闭
然后重启nginx服务
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx
发现Content-Encoding没有返回,OK,这样不同接口之间就是原样输出,方便lua脚本输出内容!
评论