Express js缓存索引页面

时间:2014-02-23 19:40:40

标签: node.js redirect express

我使用express.js在节点中创建了一个身份验证系统。它工作正常,但当我尝试注销时,我正在重定向到索引页面。 “本地主机:3100 /”。当我去那里时,它会显示缓存状态为登录状态,有时显示新刷新的页面。如果引用页面,每件事情都会恢复正常。如果我重定向到另一个页面,那么它工作正常。 它是否与索引页面特别相关,该应用程序正在呈现缓存版本。

这主要发生在我基于res.locals.currentUser更改内容时。 currentUser正在中间件中设置。在Navbar中我使用了这个<%if(currentUser)%> <%)其他(%GT; <%}%取代。所以在重定向时,有时它会刷新,有时它会使用缓存的视图。

我也在使用express.js 3。

1 个答案:

答案 0 :(得分:2)

对于您的/路由,您希望添加一个中间件,该中间件会强制它始终加载而不进行缓存。加上这个:

app.use(function noCacheForRoot(req, res, next) {
    if (req.url === '/') {
      res.header("Cache-Control", "no-cache, no-store, must-revalidate");
      res.header("Pragma", "no-cache");
      res.header("Expires", 0);
    }
    next();
});

在您的app.use(app.router)app.user(express.static(...))声明之前,将此中间件置于列表的最高位置。