gpt4 book ai didi

node.js - 如何在 express 中的子目录上设置缓存 header

转载 作者:搜寻专家 更新时间:2023-10-31 23:10:05 25 4
gpt4 key购买 nike

在 node.js 中使用 express 时,您可以像这样控制公共(public)资源的缓存 header :

app.use(express.static(path.join(__dirname, 'public'), { maxAge: 31557600000 }));

这会将公共(public)文件夹下的所有内容设置为静态可用,缓存超时为 1 年。但是,如果我想为 public 下的其他文件设置不同的超时值怎么办?假设我在 public/images/icons 下有一些图像,我希望它们的值小于 1 年?我尝试像这样添加对静态的第二次调用:

app.use(express.static(path.join(__dirname, 'public'), { maxAge: 31557600000 }));
app.use(express.static(path.join(__dirname, 'public/images/icons'), { maxAge: 12345 }));

但是没有用。它似乎只是忽略了第二个陈述。想法?

最佳答案

Express 按顺序测试中间件,所以如果您首先调用最具体的 express.static,那么它应该可以工作,即

app.use(express.static(path.join(__dirname, 'public/images/icons'), { maxAge: 12345 }));
app.use(express.static(path.join(__dirname, 'public/images'), { maxAge: 1234567 }));
app.use(express.static(path.join(__dirname, 'public/else'), { maxAge: 9874567 }));
app.use(express.static(path.join(__dirname, 'public'), { maxAge: 31557600000 }));

等等

编辑:

这不会维护路径,所以我会这样做

function static(dirname, age) {
return express.static(path.join(__dirname, dirname), { maxAge: age });
}

然后调用

app.use('/public/images/icons', static('public/images/icons', 12345));
app.use('/public/images/', static('public/images', 1234567);

等等

这背后的原因是我以前的解决方案将所有静态文件挂载在根目录下,而此解决方案将每个目录挂载在该文件路径上并具有正确的 maxAge

关于node.js - 如何在 express 中的子目录上设置缓存 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15437171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com