我在后端使用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
}))
但是它似乎没有任何作用。有谁知道如何将Cache-Control设置为Express文件夹?
编辑:-按照@Giovanny的回答,我进行了更正,但仍为标头设置了max-age = 0
我认为是因为客户端对请求标头的默认设置?
答案 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');