我正试图缩小我的 AJAX 调用中发生的一些奇怪之处。我的 PHP 脚本一开始就有这个:
ob_start("ob_gzhandler");
适用于 HTML。但是用 application/json 数据做这件事有什么问题吗?任何人都知道的任何浏览器问题?
我不这么认为...我以前使用过存储为 gzip 压缩 JSON 的静态文件,并且它在 AJAX 上运行良好。
编辑:我检查了我的 php 脚本,我做的唯一特别的事情就是包含这些标题:
Content-Encoding: gzip
Content-Type: text/plain
如果我没记错的话,每当我尝试将 Content-Type 更改为指示 JSON 的内容时,客户端都会遇到问题。
一些较旧的浏览器,例如某些版本的 IE6,会破坏 gzip 压缩的内容,尤其是 js 内容。
只需检查您的服务器是否发送了正确的内容编码标头,即
Content-Encoding: gzip
您还应该在发送 gzip 压缩内容之前检查浏览器发送的标头是否有正确的接受编码标头...也就是说,
Accept-Encoding: gzip,deflate
只要浏览器gzip
在Accept-Encoding
请求标头中指定,您就可以提供 gzip 压缩的内容。在这种情况下,JSON 和 HTML 之间没有区别,也不会引起任何问题。
我不会在 PHP 中启用压缩,而是在 Apache 中启用压缩(使用 mod_deflate),这样您就可以检查各种不兼容的浏览器,并且只为接受并正确处理它的浏览器发送压缩数据。