Node.js 无法为我的静态资源Express设置缓存控制标头
我在后端使用Express,在前端使用React(创建React应用程序)。 React在Node.js 无法为我的静态资源Express设置缓存控制标头,node.js,reactjs,express,static,Node.js,Reactjs,Express,Static,我在后端使用Express,在前端使用React(创建React应用程序)。 React在client/build/static目录中生成我的所有捆绑资产 app.use(express.static(path.join(__dirname, "..", "client/build/static"), { maxage: 31536000 })) 目录中有三个文件夹css,js,media。我看到他们在开发者控制台的网络选项卡中有一个max age=0 因此,我尝试使用
client/build/static
目录中生成我的所有捆绑资产
app.use(express.static(path.join(__dirname, "..",
"client/build/static"), {
maxage: 31536000
}))
目录中有三个文件夹css
,js
,media
。我看到他们在开发者控制台的网络选项卡中有一个max age=0
因此,我尝试使用express静态中间件为这些文件夹设置缓存控制头,方法是在server
目录中的app.js文件中编写以下代码
app.use(express.static(path.join(__dirname, "..",
"client/build/static"), {
maxage: 31536000
}))
但它似乎没有任何效果。有人知道如何在express中设置文件夹的缓存控制吗
编辑:-根据@Giovanny的回答,我进行了修正,但仍然为标题设置了max age=0
我认为这是因为客户端默认设置了请求头
您的代码看起来不错,唯一的问题是您正在设置选项
maxage
,而不是maxage
。这与预期的效果一样:
app.use(express.static(path.join(__dirname, "..",
"client/build/static"), {
maxAge: 31536000
}))
您可以在此处看到静态文件的选项列表:
您可以用另一种方式指定缓存控制头,它将相应地进行缓存。其想法是在任何输出之前添加对res.set()的调用
res.set('Cache-Control', 'client/build/static, max-age=31557600');
我看到一些博客中使用了
maxage
。我的错。我也试过设置maxAge,但似乎仍然不起作用。顺便说一下,maxage也是一个有效的密钥。