我正在寻找一个gzip压缩文件,但是我目前遵循或提出的所有方法似乎都没有任何效果。
我的静态资源文件夹中有一个带gz扩展名的gzip压缩文件。
目前我使用了以下内容:
router.get("*.js", (req, res, next) => {
// only if file exists, the substr is to remove /assets in front
if (!fs.existsSync(`/app/service/public/${req.url.substr(7)}.gz`)) {
return next();
}
console.log(`${req.url} -> ${req.url}.gz`);
req.url = `${req.url}.gz`;
res.set("Content-Encoding", "gzip");
res.set("Content-Type", "text/javascript");
next();
});
router.use("/assets", express.static("/app/service/public"));
文件存在并且目录已正确设置,但是对于某些它似乎没有提供gzip文件(它也没有添加正确的标头)
答案 0 :(得分:1)
问题是您的静态中间件设置,它指向错误的路径。
鉴于评论中的信息:
.js.gz
个文件存储在../public/assets/static/js/
/assets/static/js/bundle.js
,该文件应使用上述目录中名为bundle.js.gz
的文件这意味着您需要使用两种静态中间件配置中的一种:
app.use('/assets', express.static(__dirname + '/../public/assets'));
或者:
app.use(express.static(__dirname + '/../public/'))
答案 1 :(得分:0)
我推荐express-static-gzip完全符合您的要求。
app.use("/", expressStaticGzip("/my/rootFolder/"));
此外,您可以指定其他选项,但是默认设置适用于您的情况。