无法为我的静态资源 Express 设置缓存控制标头

Aak*_*ash 2 static node.js express reactjs

我在后端使用 Express,在前端使用 React(create-react-app)。React 在client/build/static目录中生成我所有的捆绑资产

该目录中包含三个文件夹css, js, media。我看到他们在开发者控制台的网络选项卡中有一个 max-age=0。

因此,我尝试使用快速静态中间件通过在server目录内的 app.js 文件中编写以下代码来为这些文件夹设置 Cache-Control 标头

app.use(express.static(path.join(__dirname, "..", 
    "client/build/static"), {
       maxage: 31536000
}))
Run Code Online (Sandbox Code Playgroud)

但它似乎没有任何效果。有谁知道如何在 express 中将 Cache-Control 设置为文件夹

编辑:- 按照@Giovanny 的回答,我进行了纠正,但仍然为标题设置了 max-age=0

请求头

我认为这是因为客户端对请求标头的默认设置?

请求头

小智 5

您的代码看起来正确,唯一的问题是您正在设置选项maxage而不是maxAge. 这按预期工作:

app.use(express.static(path.join(__dirname, "..", 
    "client/build/static"), {
       maxAge: 31536000
}))
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看静态文件的选项列表:https : //expressjs.com/en/api.html

您可以以另一种方式指定缓存控制标头,它会相应地缓存。这个想法是在任何输出之前添加对 res.set() 的调用。

res.set('Cache-Control', 'client/build/static, max-age=31557600');
Run Code Online (Sandbox Code Playgroud)