代码之家  ›  专栏  ›  技术社区  ›  Maxim

在express中提供预压缩的gzip文件。js(不带compress())

  •  3
  • Maxim  · 技术社区  · 8 年前

    我希望提供一个gzip文件,但是我目前遵循或提出的所有方法似乎都没有任何效果。

    我的静态资产文件夹中有一个gzip文件,扩展名为gz。

    目前,我使用了以下工具:

    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"));
    

    2 回复  |  直到 8 年前
        1
  •  1
  •   robertklep    8 年前

    根据您评论中的信息:

    • .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/'))
    
        2
  •  1
  •   Thierry Prost    7 年前

    我推荐 express-static-gzip 这正是你想要的。

    app.use("/", expressStaticGzip("/my/rootFolder/"));
    

    此外,您可以指定不同的选项,但默认选项适用于您的情况。