我有一些来自Unity版本的文件,我无法添加标题。他们有扩展名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压缩文件以便浏览器理解它们?
答案 0 :(得分:1)
您可以使用express-static-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'));