如何在Node.js/Express中将expires头添加到favicon.ico

如何在Node.js/Express中将expires头添加到favicon.ico,node.js,express,favicon,expires-header,Node.js,Express,Favicon,Expires Header,在Express中,我向静态文件添加expires头,如下所示 app.use(function (req, res, next) { // static folder: css if (req.url.indexOf('/css/') === 0) { res.setHeader('Cache-Control', 'public, max-age=345600'); // 4 days res.setHeader('Expires', new

在Express中,我向静态文件添加expires头,如下所示

app.use(function (req, res, next) {

    // static folder: css
    if (req.url.indexOf('/css/') === 0) {
        res.setHeader('Cache-Control', 'public, max-age=345600'); // 4 days
        res.setHeader('Expires', new Date(Date.now() + 345600000).toUTCString());
    }

});

app.use(express.static(root + '/app'));
我不能做的是像这样捕捉favicon.ico请求

是否有方法将expires标头添加到Node/Express中的favicon?
是什么使favicon.ico请求与其他静态文件如此不同


谢谢

您可以将
maxAge
选项传递给favicon和静态中间件:

app.use(express.favicon(__dirname + '/public/favicon.ico', { maxAge: 2592000000 }));
资料来源:


  • 我认为用它来代替搜索引擎优化更友好

    app.use(express.static(__dirname + '/public', {
            maxAge: 86400000,
            setHeaders: function(res, path) {
                res.setHeader("Expires", new Date(Date.now() + 2592000000*30).toUTCString());
              }
        }))
    

    这里的答案是正确的,但是有点过时,因为express不再支持这个中间件,所以简单的解决方法是使用这个包


    代码就在上面的链接中…

    交付favicon.ico时,req.url是什么样子的?它是否在你的app.use-function中运行?+1是一个很好的代码参考。谢谢
    var connect = require('connect')
    var favicon = require('serve-favicon')
    var path = require('path')
    
    var app = connect()
    app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')))
    
    // Add your middleware here, etc.
    
    app.listen(3000)