【问题标题】:Express.js: Set cache-control header for static assets bundled in webpackExpress.js:为 webpack 中捆绑的静态资产设置缓存控制标头
【发布时间】:2017-10-19 16:15:51
【问题描述】:

我不知道如何使用 express.js 和 webpack 为静态资产设置 Cache-Control 标头。

在我的 react 应用中,我包含如下静态图像:

 <img src={require("./images/Logo.png")} alt="Logo"/>

我的 webpack.config.js 中有一个加载器,可以将图像输出到 /public/images

module: {
    loaders: [
    {
        test: /\.png/,
        loader: 'url-loader?limit=10000&name=public/images/[name].[ext]'
     }]
}

最后,我将 server.js 中的 /public 文件夹标记为包含静态资产并设置 Cache-Control 标头

const server = express();
server.use(express.static(path.join(__dirname, 'public'), {maxAge: "30d"}));

问题是require()解析的路径包括/public文件夹:

<img class="full-width" src="/public/images/Logo.png" alt="Logo">

但 express 需要一个没有 public/ 部分的 URL。

有没有办法强制express.static() 在其路径中包含/public?

【问题讨论】:

    标签: reactjs express caching webpack


    【解决方案1】:

    有没有办法强制express.static() 在其路径中包含/public?

    绝对:

    server.use('/public', express.static(path.join(__dirname, 'public'), {maxAge: "30d"}));
    

    【讨论】:

    • 谢谢。我试过了,虽然静态资产是来自 /public/images URL 的服务器,但 Cache-Control 标头不存在。我需要一个静态资产具有此标头的解决方案
    • 为我工作:Cache-Control: public, max-age=2592000
    • 我已经在一个单独的项目中尝试过了,它确实有效。问题一定出在其他地方。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2017-06-15
    • 2022-01-26
    • 2016-04-12
    • 1970-01-01
    • 2020-09-16
    • 1970-01-01
    • 2015-08-19
    • 2010-10-26
    相关资源
    最近更新 更多