d51*_*512 4 caching node.js express
在 node.js 中使用 express 时,您可以像这样控制公共资源的缓存头:
app.use(express.static(path.join(__dirname, 'public'), { maxAge: 31557600000 }));
Run Code Online (Sandbox Code Playgroud)
这会将 public 文件夹下的所有内容设置为静态可用,缓存超时为 1 年。但是如果我想为公共下的其他文件设置不同的超时值怎么办?假设我在 public/images/icons 下有一些图像,我希望在 1 年内具有较小的值?我尝试添加第二个对 static 的调用,如下所示:
app.use(express.static(path.join(__dirname, 'public'), { maxAge: 31557600000 }));
app.use(express.static(path.join(__dirname, 'public/images/icons'), { maxAge: 12345 }));
Run Code Online (Sandbox Code Playgroud)
但它没有用。它似乎只是忽略了第二个语句。想法?
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 }));
Run Code Online (Sandbox Code Playgroud)
等等。
编辑:
这不会保持路径,所以我会做
function static(dirname, age) {
return express.static(path.join(__dirname, dirname), { maxAge: age });
}
Run Code Online (Sandbox Code Playgroud)
然后打电话
app.use('/public/images/icons', static('public/images/icons', 12345));
app.use('/public/images/', static('public/images', 1234567);
Run Code Online (Sandbox Code Playgroud)
等等。
这背后的原因是我以前的解决方案将所有静态文件安装在根目录下,而此解决方案使用正确的 maxAge 在该文件路径中安装每个目录
| 归档时间: |
|
| 查看次数: |
4779 次 |
| 最近记录: |