如何在Node.js/Express中为favicon.ico添加过期标头

15

在Express中,我可以通过以下方式为我的静态文件添加过期头信息

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请求。

在Node/Express中是否有一种方法可以为favicon添加过期标头?与其他静态文件相比,是什么使favicon.ico请求如此不同?

谢谢!


当传送favicon.ico时,req.url是什么样子? 它是否经过您的app.use函数? - hgoebl
+1 意味着一个好的代码参考。谢谢! - Amir Arad
3个回答

12

8
我认为使用那个更符合SEO友好的要求。
app.use(express.static(__dirname + '/public', {
        maxAge: 86400000,
        setHeaders: function(res, path) {
            res.setHeader("Expires", new Date(Date.now() + 2592000000*30).toUTCString());
          }
    }))

0

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

https://github.com/expressjs/serve-favicon

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)

代码来自上面的链接...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接