如何使用Express / Nodejs缓存单个资源

时间:2013-04-19 03:08:19

标签: node.js caching express http-headers

我服务的背景图片相当大,我想让它永久缓存。我想我应该发送一个最大年龄为无穷大的缓存头。我怎样才能以干净和正确的方式做到这一点。我正在使用express(开箱即用)并且没有任何缓存模块。

2 个答案:

答案 0 :(得分:5)

您可以设置一个中间件处理程序,它可以匹配静态背景图像的路径,然后设置一个缓存控制头。这将为您的图像设置缓存控制标头,但不为其他静态资源设置。

app.configure(function(){
  app.use(function(req, res, next) {
    var matchUrl = '/background.jpg';
    if(req.url.substring(0, matchUrl.length) === matchUrl) {
      res.setHeader("Cache-Control", "max-age=31556926");
    }
    return next();
  });
  app.use(express.static(path.join(application_root, "StaticPages")));
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

订单很重要。您的中间件函数需要在express.static处理程序之前排成一行。

答案 1 :(得分:1)

我认为更好的方法是缩小图像,然后使用像Diet JPEG(OS X)这样的程序来最小化文件大小。