提问者:小点点

如何在Express4应用程序中禁用某些路由的缓存?


我尝试了以下示例:从Express.js中删除所有头,在Express node.js中禁用etag头,以及https://github.com/expressjs/Express/issues/2472,但不幸的是,它们没有解决我的问题。在Firefox、Opera和Chrome中,当开发者工具打开并禁用缓存时,或者当我在浏览器上线后第一次启动应用程序时,我的应用程序都能正常工作。我知道这与缓存有关。请告诉我,如何在Express应用程序中禁用某些路由的缓存。有可能吗?有没有一个通用的方法来做这件事?

附注。我很惊讶,但我的Express应用程序在Internet Explorer 11中运行得很好


共1个答案

匿名用户

在Express.js中处理缓存时需要考虑两件事

  1. ETAG
  2. 缓存控制标头。

埃塔格

如果您的动态内容不能从ETags中受益,那么最好禁用它,因为它在每个请求中带来的开销很小。

app.set('etag', false)

缓存控制

要完全禁用缓存,请使用以下头:

app.use((req, res, next) => {
  res.set('Cache-Control', 'no-store')
  next()
})

此标头不影响express.static()中间件。它以自己的方式处理缓存。