使用带有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);
等等