有没有办法控制使用express缓存哪些静态资源

时间:2015-05-20 19:45:45

标签: html node.js express

使用express我可以设置缓存的最大年龄,如下所示:

app.use(express.static(path)), { maxAge: 1234567 });

我有一个html文件,可以加载几个脚本和样式表。有没有办法控制单个文件的max-age?例如我想将我的JS库的年龄设置为6个月,而不是缓存经常更改的文件。

1 个答案:

答案 0 :(得分:0)

除了maxAge之外,Express版本4 serve-static还有一个可选的回调 setHeaders 。 e.g。

var express = require('express');
var serveStatic = require('serve-static');
var app = express();

app.use(serveStatic('/path/to/files/')), { 
    maxAge: 0 ,
    setHeaders : function (res, path) {
        if (path === '/path/to/files/vendor-bundle.min.js') {
            res.setHeader('Cache-Control', public, max-age=345600');
            res.setHeader('Expires', new Date(Date.now() + 345600000).toUTCString());
        }
    }
});

对于不支持 setHeaders 旧版本的,可以编写自定义中间件(如上所述)。