设置Cache-control
头来no-cache
有条件用于注销用户
app.use(function(req, res, next) {
if (!req.user)
res.header('Cache-Control', 'private, no-cache, no-store, must-revalidate');
next();
});
这将迫使浏览器以获取新的副本甚至当他们击中“返回”页面时。
注:这是以禁用缓存这还没有登录,这对于这个答案的目的包括刚刚退出的那些所有用户的成本。如果您不想完全禁用缓存,则应该找到一种方法来区分这两种缓存。所有已注销的用户。有会话的东西..
如果你确定当用户回来,'/login'
是他们将登陆的路线,那么你可以只在那里定义它,从而节省自己的麻烦做到上述。
确切部位在哪里这段代码去?
app.get('/logout', isLoggedIn, function(req, res) {
req.logOut();
if (!req.user)
res.header('Cache-Control', 'private, no-cache, no-store, must-revalidate');
res.redirect('/login');
});
它可以这样使用吗?
号
app.get
(或app.use
)定义的路由。文档:http://expressjs.com/api.html#request
app.get('/logout'...
将只有来如果路由'/logout'
由客户端请求的执行。
app.use(...)
(未指定任何路由)将针对所有请求执行。
这些路由“中间件”(当它们被调用时)也相继被执行。(你会在上面提到的文档了解更多信息)
您需要的任何其他途径之前设置页眉,因此,无论这些其他途径渲染,渲染与强制无效用户的缓存头。
// > HERE <
// before all the other routes
app.get('/logout'...
app.get('/login'...
app.get('/'...
app.get('/stuff'...
这很可能是从浏览器的缓存中显示内容,这意味着它没有打到网络,所以你可以做的事情不多。 – mscdex 2015-02-05 14:53:52