类似于this post需要向浏览器发送一个大的30MB JSON文件,压缩到3MB。 (是的,是的,解压缩是大而密集的,但更好的是将它作为一个静态文件提供一次,比如说,对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的支持不会)
答案 0 :(得分:3)
如果有Content-Encoding
标题,浏览器应自动解压缩服务器响应。
使用node.js,您将使用标题提供已压缩的文件:
Content-Encoding: gzip
即:
res.setHeader( "Content-Encoding", "gzip" );
现代浏览器支持gzip,对于旧版浏览器,请检查http://www.schroepl.net/projekte/mod_gzip/browser.htm