Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to add expires header to favicon.ico in Node.js / Express

In Express I add expires headers to my static files like this

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'));

What I cannot do is catch the favicon.ico request like this.

Is there a way to add expires header to favicon in Node/Express?
What makes the favicon.ico request so different compared to other static files?

Thx!

like image 259
ezmilhouse Avatar asked Nov 04 '13 11:11

ezmilhouse


2 Answers

You can pass a maxAge option to both favicon and static middleware :

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

Sources :

  1. https://groups.google.com/forum/?fromgroups#!topic/express-js/W5mkAorVrW8
  2. http://www.senchalabs.org/connect/favicon.html
like image 99
user568109 Avatar answered Nov 07 '22 06:11

user568109


I think using that instead is more SEO friendly

app.use(express.static(__dirname + '/public', {
        maxAge: 86400000,
        setHeaders: function(res, path) {
            res.setHeader("Expires", new Date(Date.now() + 2592000000*30).toUTCString());
          }
    }))
like image 27
Amged Avatar answered Nov 07 '22 06:11

Amged