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

nimxete2  于 2023-06-05  发布在  Node.js
关注(0)|答案(1)|浏览(465)

我试了这些例子:Removing all headers from express.js这个Disable etag Header in Express Node.js和这个https://github.com/expressjs/express/issues/2472但不幸的是他们没有解决我的问题。在Firefox、Opera和Chrome中,当开发者工具打开并且缓存被禁用时,或者当我在浏览器启动后第一次启动应用时,我的应用工作正常。我知道这与缓存有关。请告诉我,如何禁用高速缓存的一些路线的应用程序。这可能吗?有没有一个通用的方法来做到这一点?

P.S.我很惊讶,但我的Express应用程序在Internet Explorer 11中运行得很好

1sbrub3j

1sbrub3j1#

我认为您可以通过设置res来设置头以强制重新验证,例如

res.setHeader('Surrogate-Control', 'no-store');
res.setHeader(
  'Cache-Control',
  'no-store, no-cache, must-revalidate, proxy-revalidate'
);
res.setHeader('Expires', '0');

或者使用中间件更整洁一些

const dontCache = (req, res, next) => {
  res.setHeader('Surrogate-Control', 'no-store');
  res.setHeader(
    'Cache-Control',
    'no-store, no-cache, must-revalidate, proxy-revalidate'
  );
  res.setHeader('Expires', '0');
  next();
};

app.get('/some-route', dontCache, async(req, res) => {
  ...
})

相关问题