使用ExpressJS为每个文件设置Cache-Control

4

在ExpressJS应用程序中,是否有一种方法可以针对每个文件设置Cache-Control属性?我希望能够精细地控制我的应用程序中文件的缓存...我该如何实现这一点? 在Cache-Control方面有哪些最佳实践?


response.setHeader('Cache-Control', '...'); 你能否解释一下需要设置哪些文件?我猜中间件是控制这个的最佳选择,但需要更多关于如何以及何时进行控制的信息。 - wprl
所有正在提供的图像、JavaScript、CSS等文件...我想要类似于应用程序缓存清单的东西,但是考虑到我的情况,设置标头更好,因为该网站仅在桌面上查看... - Brett
2个回答

8
app.use(function (req, res, next) {
  if (req.url.match(/* some filter */)) {
    res.setHeader('Cache-Control', ...)
  } else if (req.url.match(/* some filter */)) {
    res.setHeader('Cache-Control', ...)
  }

  next()
})

app.use(express.static(__dirname + '/public'))

不需要把它复杂化。

2

这个帖子已经很老了,但是有一个更简单的方法可以在静态文件上实现基本的缓存控制。只需像这样向内置中间件函数express.static()添加一个选项对象:

let options = {
    maxAge: "1d"
}

app.use(express.static(__dirname + '/public', options))

这将默认为所有静态资源启用缓存控制。它会将Cache-Control头设置为public, max-age=86400


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接