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

谢谢!

4

3 回答 3

12

您可以将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
于 2013-11-04T13:18:43.757 回答
7

我认为使用它对 SEO 更友好

app.use(express.static(__dirname + '/public', {
        maxAge: 86400000,
        setHeaders: function(res, path) {
            res.setHeader("Expires", new Date(Date.now() + 2592000000*30).toUTCString());
          }
    }))
于 2016-02-26T14:15:42.013 回答
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)

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

于 2017-03-06T09:13:38.593 回答