設置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