在浏览器中解压缩一个JSON数据文件,作为来自Node.js的静态文件

类似这个post需要发送一个大的30MB的JSON文件到浏览器,压缩到3MB。 (是的,是的,这是一个很大的解决scheme,但是最好是把它作为一个静态文件,而不是像一个REST API的150个单独的AJAX调用一样,而且在这里有一些预先加载的时间是可以的。

也像原来的文章,这是一个静态文件,所以可以提前压缩(所以服务器不需要压缩每个请求)。 此外,可以从服务器上的公共目录,它在Node.js / Express.js我已经标记为静态:

app.use(express.static(__dirname + "/public"));

一位评论者回答说:

“也可以预压缩JSON,然后告诉Apache使用适当的头文件来提供这些文件,以避免不得不重新压缩。”

问题1:我怎样才能在Node / Express中做到这一点,即告诉Node告诉浏览器该文件是gzip格式,以便浏览器自动解压缩它?

另一个答案是“…但是检查浏览器是否支持压缩” ,这引发了另外一个问题?

问题2:大多数现代浏览器是否具有解压缩内容的能力? 还是我最好只包括一个JavaScript库的解压缩,通过Ajax作为二进制文本获取数据,并始终解压缩在我自己的代码,而不是浏览器的本地实用程序?

(对于我的目的,排除一些旧的浏览器是可以的,例如,放弃IE6就可以,放弃对IE9的支持不会)

如果存在Content-Encoding标头,则浏览器应自动解压缩服务器响应。

使用node.js,您可以使用标头来提供已压缩的文件:

 Content-Encoding: gzip 

IE:

 res.setHeader( "Content-Encoding", "gzip" ); 

现代浏览器支持gzip,对于旧版浏览器,请查看http://www.schroepl.net/projekte/mod_gzip/browser.htm