1

这篇文章类似,需要向浏览器发送一个 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 的支持则不行)

4

1 回答 1

3

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

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

Content-Encoding: gzip

IE:

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

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

于 2012-11-02T20:17:26.523 回答