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