浏览器提示ERR_CONTENT_DECODING_FAILED,Gzip压缩数据无法解压

最近在页面上有个显示数据表格的功能,数据由后台传给前台JS表格插件。数据格式为JSON

由于数据量很大,就想到用GZIP压缩以后传给前台。压缩前,某个表格的数据量达到3M多,用GZIP压缩后就200K左右。

业务流程是:先检查缓存中是否有静态文件,如果没有就从数据库中读出来然后保存成文件。这个过程中,我用GZIP先进行了压缩,然后保存。然后再下次读的时候直接读取这个文件。

问题是,读取静态文件之后浏览器却无法正确解码,报ERR_CONTEN_DECODING_FAILED。我在网上搜索了一下原因,有说是文件中存在BOM头,会导致解码失败,经检查生成文件的PHP没有BOM头。

期间,怀疑是文件编码的问题,于是用Editplus尝试打开,打开提示要选择编码方式,于是选择了UTF8,结果还是不行。

当我将gzencode位置放在缓存文件读取时再做压缩,发现浏览器能正常解码。推断,问题可能是处在数据保存为文件时做gzencode压缩而产生的。

用Sublime打开静态文件,发现其中的编码位置显示的是“hexadecimal”(16进制),然后尝试用UTF8编码后再打开页面,报解码错误。

开始时之所以会报解码错误,是因为我几次都是还没在浏览器上输出之前就打开过静态文件看,并把编码方式修改了。

所以用GZIP生成的文件,务必编码为16进制(hexadecimal),不要修改成其他的编码格式。

 

转载于:https://www.cnblogs.com/mysic/p/4742470.html

你可能感兴趣的:(浏览器提示ERR_CONTENT_DECODING_FAILED,Gzip压缩数据无法解压)