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

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

有没有办法在Node / Express中添加expires头文件到favicon?
与其他静态文件相比,favicon.ico请求有什么不同?

谢谢!

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

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

来源:

  1. https://groups.google.com/forum/?fromgroups#!topic/express-js/W5mkAorVrW8
  2. http://www.senchalabs.org/connect/favicon.html

我认为使用它是更友好的search引擎优化

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

这里的答案是正确的,但有点过时,不再支持这个中间件,所以简单的修复就是使用这个包。

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) 

代码是正确的从上面的链接…