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

时间:2019-02-22 06:33:35

标签: node.js reactjs express static

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

目录中有三个文件夹cssjsmedia。我发现他们在开发人员控制台的“网络”标签中的max-age = 0。

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

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

但是它似乎没有任何作用。有谁知道如何将Cache-Control设置为Express文件夹?

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

request headers

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

request headers

1 个答案:

答案 0 :(得分:4)

您的代码看起来正确,唯一的事情是您正在设置选项maxage而不是maxAge。可以按预期工作:

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

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

您可以通过其他方式指定缓存控制标头,它将相应地进行缓存。这个想法是在任何输出之前添加对res.set()的调用。

res.set('Cache-Control', 'client/build/static, max-age=31557600');