Gzipped JSON文件没有解压缩

我将大型(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文件。

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

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

您不必手动gzip服务器上的文件。 如果浏览器和因此基础XMLHttpObject支持Accept-Encoding gzip,则deflate header然后在传输之前由服务器压缩(放缩)文件(响应)。

但是,您需要配置您的Web服务器(如果使用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

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