Node.js 如何在express/nodejs中向静态gzip文件添加头?
我有一些来自Unity build的文件,无法向其中添加标题。它们有jsgz、memgz和datagz扩展。它们位于我的NodeJs项目的公共文件夹中。 我使用的是Express 4并设置了压缩,但我相信这只会压缩现有文件进行传输,而不会处理已压缩的文件。 我尝试使用app.get添加标题,但似乎不起作用: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-
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吗?