我使用express.js在节点中创建了一个身份验证系统。它工作正常,但当我尝试注销时,我正在重定向到索引页面。 “本地主机:3100 /”。当我去那里时,它会显示缓存状态为登录状态,有时显示新刷新的页面。如果引用页面,每件事情都会恢复正常。如果我重定向到另一个页面,那么它工作正常。 它是否与索引页面特别相关,该应用程序正在呈现缓存版本。
这主要发生在我基于res.locals.currentUser更改内容时。 currentUser正在中间件中设置。在Navbar中我使用了这个<%if(currentUser)%> <%)其他(%GT; <%}%取代。所以在重定向时,有时它会刷新,有时它会使用缓存的视图。
我也在使用express.js 3。
答案 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(...))
声明之前,将此中间件置于列表的最高位置。