微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

使用带有node.js的express时,您可以控制公共资源的缓存头,如下所示:

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

这将公共文件夹下的所有内容设置为静态可用,缓存超时为1年.但是,如果我想为公共下的其他文件设置不同的超时值呢?假设我在公共/图像/图标下有一些图像,我希望它具有1年的较小值?我尝试添加第二次静态调用,如下所示:

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

但它不起作用.它似乎只是忽略了第二个陈述.思考?

解决方法

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

app.use(express.static(path.join(__dirname,{ 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,{ 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在该文件路径上安装每个目录

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐