Gzipped JSON文件没有解压缩

时间:2011-12-02 01:41:07

标签: jquery json browser gzip

我的大型(30MB +)JSON文件存储在我的服务器上,作为file.json。使用jQuery的getJSON(“http://site/file.json”)函数,它可以正常工作。但是,正如您可能认为下载30MB的JSON响应需要花费大量时间。

相反,我现在将它们存储为Gzip文件(file.json.gz),将它们降低到不到1MB!我想通过使用getJSON(“http://site/file.json.gz”)来做同样的事情,但看起来浏览器解压缩GZIP的响应,所以解析它不起作用。

那么,有没有办法让jQuery或浏览器解压缩使用GZIP压缩的静态JSON文件,如file.json.gz?

BTW:正确压缩保存的文件。如果我手动解压缩它们,我会获得30MB +有效的JSON文件。

3 个答案:

答案 0 :(得分:11)

浏览器不会自动解压缩它们运行的​​任何压缩数据。服务器必须告诉浏览器该流仅被压缩用于传输,并且需要在处理之前解压缩(否则您将无法下载和保存压缩存档!)您需要让您的Web服务器发送适当的标题(Content-Encoding),但在执行此操作之前,请检查浏览器是否支持压缩(Accept-Encoding标头)。大多数网络服务器也可以动态地为你解压缩,除非它的性能受到太大影响。

不知怎的,我觉得你在浏览器上解析那么多JSON会比检索它更麻烦......

答案 1 :(得分:2)

您不必手动gzip服务器上的文件。如果浏览器及其底层的XMLHttpObject支持 Accept-Encoding gzip,deflate 标头,那么文件(响应)将在传输之前被服务器压缩(缩小)。

但是,您需要配置您的网络服务器(如果使用IIS,请检查其metabase.xml),以便根据传入的HTTP请求的标头对响应应用deflate。

配置帮助:

对于Apache Web服务器,请参阅:http://httpd.apache.org/docs/2.0/mod/mod_deflate.html

对于IIS:http://www.codinghorror.com/blog/2004/08/http-compression-and-iis-6-0.html

答案 2 :(得分:1)

尽管存在反对这样做的争论,但可以使用JavaScript解压缩gzip压缩数据。有关解决方案,请参阅this questionthis question