首页 文章

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

提问于
浏览
1

类似于this post需要向浏览器发送一个大的30MB JSON文件,压缩到3MB . (是的,是的,解压缩是大而密集的,但最好是作为一个静态文件提供一次,而不是像对REST API的150个单独的AJAX调用那样,并且这里有一些前期加载时间可以) .

也像原始帖子一样,它是一个静态文件,因此可以提前压缩它(因此服务器不需要在每个请求上压缩它) . 此外,可以从服务器上的公共目录服务它,在Node.js / Express.js中我将其标记为静态目录:

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

一位评论者回答说:

"It is also possible to precompress your JSON and then just tell Apache to serve the files with the appropriate headers to avoid having to recompress all the time."

Question 1: 我如何在Node / Express中执行此操作,即告诉Node告诉浏览器文件是否为gzip格式,以便浏览器自动解压缩它?

另一个答案是"...but do check that the browser supports compression ",这提出了另一个问题?

Question 2: 大多数〜现代浏览器能够解压缩内容吗?或者我最好只包括一个用于解压缩的javascript库,通过Ajax作为二进制文本获取数据,并始终使用我自己的代码而不是浏览器的本机实用程序解压缩它?

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

1 回答

  • 3

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

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

    Content-Encoding: gzip
    

    即:

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

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

相关问题