【问题标题】:how to add expires header to favicon.ico in Node.js / Express如何在 Node.js / Express 中将过期标头添加到 favicon.ico
【发布时间】:2013-11-15 00:58:43
【问题描述】:

在 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.ico 请求如此不同?

谢谢!

【问题讨论】:

  • favicon.ico 交付时的 req.url 是什么样的?它是否通过您的 app.use - 函数运行?
  • +1 以获得良好的代码参考。谢谢!

标签: node.js express favicon expires-header


【解决方案1】:

您可以将maxAge 选项传递给网站图标和静态中间件:

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

【讨论】:

    【解决方案2】:

    我认为使用它对 SEO 更友好

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

    【讨论】:

      【解决方案3】:

      这里的答案是正确的,但有点过时了,因为 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)
      

      代码就在上面的链接中...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-03
        • 2016-12-06
        • 2014-07-19
        • 1970-01-01
        • 1970-01-01
        • 2018-06-20
        • 2013-07-16
        • 2012-12-08
        相关资源
        最近更新 更多