Node.js 如何在express/nodejs中向静态gzip文件添加头?

Node.js 如何在express/nodejs中向静态gzip文件添加头?,node.js,express,gzip,Node.js,Express,Gzip,我有一些来自Unity build的文件,无法向其中添加标题。它们有jsgz、memgz和datagz扩展。它们位于我的NodeJs项目的公共文件夹中。 我使用的是Express 4并设置了压缩,但我相信这只会压缩现有文件进行传输,而不会处理已压缩的文件。 我尝试使用app.get添加标题,但似乎不起作用: app.get('/blah/unitymodels/Release/widget.js', function(req, res, next) { ... Check ['accept-

我有一些来自Unity build的文件,无法向其中添加标题。它们有jsgz、memgz和datagz扩展。它们位于我的NodeJs项目的公共文件夹中。 我使用的是Express 4并设置了压缩,但我相信这只会压缩现有文件进行传输,而不会处理已压缩的文件。 我尝试使用app.get添加标题,但似乎不起作用:

app.get('/blah/unitymodels/Release/widget.js', function(req, res, next) {
  ... Check ['accept-encoding'] ...
  if (acceptsGzip) {
      var gzippedPath = req.url + 'gz';
      res.sendFile(gzippedPath, {
          root: './public',
          headers: {
              'Content-Encoding': 'gzip',
              'Content-Type': 'application/javascript'
          }
  }
...
我尝试过这样设置头文件,使用res.set,先设置它们,然后让next()调用处理响应,但每当我得到文件时,它只是没有额外头文件的gzip文件,浏览器无法理解它。 我尝试过的方法确实添加了其他头(“wibble”、“x-timestamp”等),所以我假设有其他东西正在拦截这些特定的头。 我如何才能返回这些gzip文件,以便浏览器理解它们?

您可以将其用作Express中间件,如下所示:

/* here serves gzipped static files */
app.use('/my_static/zipped/', expressStaticGzip('my_static/zipped/', {
    customCompressions: [{
        encodingName: "gzip",
        fileExtension: "gz"
    }]
}));

/* here serves other static files */
app.use('/my_static', express.static('my_static'));

我想这是我自己解决的。我使用express.static修改标题,效果很好。然后,我在上面的app.get函数中使用了setHeaders,这似乎也很有效。希望它现在已经修好了。你能解释一下静态@Matt_JD吗?