4 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊
首先,后退按鈕歷史記錄不是緩存:
新鮮度模型(第4.2節(jié))不一定適用于歷史機(jī)制。也就是說,歷史機(jī)制即使已經(jīng)過期也可以顯示先前的表示。
在舊的HTTP規(guī)范中,措辭甚至更強(qiáng),明確告訴瀏覽器忽略后退按鈕歷史記錄的緩存指令。
回到應(yīng)該回到過去(到時(shí)候用戶在登錄)。它不會(huì)向前導(dǎo)航到先前打開的URL。
但是,實(shí)際上,在非常特定的情況下,緩存可以影響后退按鈕:
頁面必須通過HTTPS提供,否則此緩存破壞將不可靠。另外,如果您不使用HTTPS,那么您的頁面很容易受到許多其他方式的登錄竊取。
你必須發(fā)送
Cache-Control: no-store, must-revalidate
(一些瀏覽器觀察no-store
和一些觀察must-revalidate
)
你永遠(yuǎn)不需要任何:
<meta>
使用緩存標(biāo)頭 - 它根本不起作用。完全沒用。post-check
/pre-check
- 它是僅適用于可緩存資源的IE-only指令。兩次或十幾個(gè)部分發(fā)送相同的標(biāo)題。一些PHP片段實(shí)際上取代了以前的標(biāo)題,導(dǎo)致只發(fā)送了最后一個(gè)。
如果需要,可以添加:
no-cache
或者max-age=0
,這將使資源(URL)“陳舊”,并要求瀏覽器檢查服務(wù)器是否有更新的版本(no-store
已經(jīng)暗示這更強(qiáng))。Expires
HTTP / 1.0客戶端的過去日期(盡管這些天真正的 HTTP / 1.0僅客戶端完全不存在)。

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
正如porneL所述,您想要的不是停用緩存,而是停用歷史緩沖區(qū)。不同的瀏覽器有自己的微妙方法來禁用歷史緩沖區(qū)。
在Chrome(v28.0.1500.95 m)中,我們只能這樣做Cache-Control: no-store
。
在FireFox(v23.0.1)中,其中任何一個(gè)都可以工作:
Cache-Control: no-store
Cache-Control: no-cache
(僅限https)Pragma: no-cache
(僅限https)Vary: *
(僅限https)
在Opera(v12.15)中,我們只能通過Cache-Control: must-revalidate
(僅限https)執(zhí)行此操作。
在Safari(v5.1.7,7534.57.2)中,任何一個(gè)都可以工作:
Cache-Control: no-store
<body onunload="">
在HTML中Cache-Control: no-store
(僅限https)
在IE8(v8.0.6001.18702IC)中,任何一個(gè)都可以工作:
Cache-Control: must-revalidate, max-age=0
Cache-Control: no-cache
Cache-Control: no-store
Cache-Control: must-revalidate
Expires: 0
Cache-Control: must-revalidate
Expires: Sat, 12 Oct 1991 05:00:00 GMT
Pragma: no-cache
(僅限https)Vary: *
(僅限https)
結(jié)合上述內(nèi)容為我們提供了適用于Chrome 28,F(xiàn)ireFox 23,IE8,Safari 5.1.7和Opera 12.15的解決方案:( Cache-Control: no-store, must-revalidate
僅限https)
請(qǐng)注意,需要https,因?yàn)镺pera不會(huì)為普通的http頁面停用歷史記錄緩沖區(qū)。如果你真的無法獲得https并且你準(zhǔn)備忽略O(shè)pera,你可以做的最好的是:
Cache-Control: no-store<body onunload="">
下面顯示了我的測(cè)試的原始日志:
HTTP:
Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: 0
Pragma: no-cache
Vary: *
<body onunload="">
失敗:Opera 12.15
成功:Chrome 28,F(xiàn)ireFox 23,IE8,Safari 5.1.7Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: Sat, 12 Oct 1991 05:00:00 GMT
Pragma: no-cache
Vary: *
<body onunload="">
失?。篛pera 12.15
成功:Chrome 28,F(xiàn)ireFox 23,IE8,Safari 5.1.7Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: 0
Pragma: no-cache
Vary: *
失?。篠afari 5.1.7,Opera 12.15
成功:Chrome 28,F(xiàn)ireFox 23,IE8Cache-Control: private, no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: Sat, 12 Oct 1991 05:00:00 GMT
Pragma: no-cache
Vary: *
失敗:Safari 5.1.7,Opera 12.15
成功:Chrome 28,F(xiàn)ireFox 23,IE8Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: 0
Pragma: no-cache
Vary: *
<body onunload="">
失敗:Chrome 28,F(xiàn)ireFox 23,Safari 5.1.7,Opera 12.15
成功:IE8Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: Sat, 12 Oct 1991 05:00:00 GMT
Pragma: no-cache
Vary: *
<body onunload="">
失?。篊hrome 28,F(xiàn)ireFox 23,Safari 5.1.7,Opera 12.15
成功:IE8Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: 0
Pragma: no-cache
Vary: *
<body onunload="">
失敗:Chrome 28,F(xiàn)ireFox 23,Safari 5.1.7,Opera 12.15
成功:IE8Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: Sat, 12 Oct 1991 05:00:00 GMT
Pragma: no-cache
Vary: *
<body onunload="">
失?。篊hrome 28,F(xiàn)ireFox 23,Safari 5.1.7,Opera 12.15
成功:IE8Cache-Control: no-store
失?。篠afari 5.1.7,Opera 12.15
成功:Chrome 28,F(xiàn)ireFox 23,IE8Cache-Control: no-store
<body onunload="">
失?。篛pera 12.15
成功:Chrome 28,F(xiàn)ireFox 23,IE8,Safari 5.1.7Cache-Control: no-cache
失?。篊hrome 28,F(xiàn)ireFox 23,Safari 5.1.7,Opera 12.15
成功:IE8Vary: *
失?。篊hrome 28,F(xiàn)ireFox 23,IE8,Safari 5.1.7,Opera 12.15
成功:無Pragma: no-cache
失?。篊hrome 28,F(xiàn)ireFox 23,IE8,Safari 5.1.7,Opera 12.15
成功:無Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: Sat, 12 Oct 1991 05:00:00 GMT
Pragma: no-cache
Vary: *
<body onunload="">
失?。篊hrome 28,F(xiàn)ireFox 23,Safari 5.1.7,Opera 12.15
成功:IE8Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: 0
Pragma: no-cache
Vary: *
<body onunload="">
失?。篊hrome 28,F(xiàn)ireFox 23,Safari 5.1.7,Opera 12.15
成功:IE8Cache-Control: must-revalidate, max-age=0
失?。篊hrome 28,F(xiàn)ireFox 23,Safari 5.1.7,Opera 12.15
成功:IE8Cache-Control: must-revalidate
Expires: 0
失?。篊hrome 28,F(xiàn)ireFox 23,Safari 5.1.7,Opera 12.15
成功:IE8Cache-Control: must-revalidate
Expires: Sat, 12 Oct 1991 05:00:00 GMT
失?。篊hrome 28,F(xiàn)ireFox 23,Safari 5.1.7,Opera 12.15
成功:IE8Cache-Control: private, must-revalidate, proxy-revalidate, s-maxage=0
Pragma: no-cache
Vary: *
<body onunload="">
失?。篊hrome 28,F(xiàn)ireFox 23,IE8,Safari 5.1.7,Opera 12.15
成功:無
HTTPS:
Cache-Control: private, max-age=0, proxy-revalidate, s-maxage=0
Expires: 0
<body onunload="">
失?。篊hrome 28,F(xiàn)ireFox 23,IE8,Safari 5.1.7,Opera 12.15
成功:無Cache-Control: private, max-age=0, proxy-revalidate, s-maxage=0
Expires: Sat, 12 Oct 1991 05:00:00 GMT
<body onunload="">
失?。篊hrome 28,F(xiàn)ireFox 23,IE8,Safari 5.1.7,Opera 12.15
成功:無Vary: *
失敗:Chrome 28,Safari 5.1.7,Opera 12.15
成功:FireFox 23,IE8Pragma: no-cache
失?。篊hrome 28,Safari 5.1.7,Opera 12.15
成功:FireFox 23,IE8Cache-Control: no-cache
失敗:Chrome 28,Safari 5.1.7,Opera 12.15
成功:FireFox 23,IE8Cache-Control: private, no-cache, max-age=0, proxy-revalidate, s-maxage=0
失?。篊hrome 28,Safari 5.1.7,Opera 12.15
成功:FireFox 23,IE8Cache-Control: private, no-cache, max-age=0, proxy-revalidate, s-maxage=0
Expires: 0
Pragma: no-cache
Vary: *
失?。篊hrome 28,Safari 5.1.7,Opera 12.15
成功:FireFox 23,IE8Cache-Control: private, no-cache, max-age=0, proxy-revalidate, s-maxage=0
Expires: Sat, 12 Oct 1991 05:00:00 GMT
Pragma: no-cache
Vary: *
失?。篊hrome 28,Safari 5.1.7,Opera 12.15
成功:FireFox 23,IE8Cache-Control: must-revalidate
失?。篊hrome 28,F(xiàn)ireFox 23,IE8,Safari 5.1.7
成功:Opera 12.15Cache-Control: private, must-revalidate, proxy-revalidate, s-maxage=0
<body onunload="">
失敗:Chrome 28,F(xiàn)ireFox 23,IE8,Safari 5.1.7
成功:Opera 12.15Cache-Control: must-revalidate, max-age=0
失?。篊hrome 28,F(xiàn)ireFox 23,Safari 5.1.7
成功:IE8,Opera 12.15Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: Sat, 12 Oct 1991 05:00:00 GMT
Pragma: no-cache
Vary: *
<body onunload="">
失?。篊hrome 28,Safari 5.1.7
成功:FireFox 23,IE8,Opera 12.15Cache-Control: private, no-cache, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: 0
Pragma: no-cache
Vary: *
<body onunload="">
失?。篊hrome 28,Safari 5.1.7
成功:FireFox 23,IE8,Opera 12.15Cache-Control: no-store
失?。篛pera 12.15
成功:Chrome 28,F(xiàn)ireFox 23,IE8,Safari 5.1.7Cache-Control: private, no-cache, no-store, max-age=0, proxy-revalidate, s-maxage=0
Expires: 0
Pragma: no-cache
Vary: *
<body onunload="">
失?。篛pera 12.15
成功:Chrome 28,F(xiàn)ireFox 23,IE8,Safari 5.1.7Cache-Control: private, no-cache, no-store, max-age=0, proxy-revalidate, s-maxage=0
Expires: Sat, 12 Oct 1991 05:00:00 GMT
Pragma: no-cache
Vary: *
<body onunload="">
失?。篛pera 12.15
成功:Chrome 28,F(xiàn)ireFox 23,IE8,Safari 5.1.7Cache-Control: private, no-cache
Expires: Sat, 12 Oct 1991 05:00:00 GMT
Pragma: no-cache
Vary: *
失敗:Chrome 28,Safari 5.1.7,Opera 12.15
成功:FireFox 23,IE8Cache-Control: must-revalidate
Expires: 0
失?。篊hrome 28,F(xiàn)ireFox 23,Safari 5.1.7,
成功:IE8,Opera 12.15Cache-Control: must-revalidate
Expires: Sat, 12 Oct 1991 05:00:00 GMT
失?。篊hrome 28,F(xiàn)ireFox 23,Safari 5.1.7,
成功:IE8,Opera 12.15Cache-Control: private, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: 0
<body onunload="">
失?。篊hrome 28,F(xiàn)ireFox 23,Safari 5.1.7,
成功:IE8,Opera 12.15Cache-Control: private, must-revalidate, max-age=0, proxy-revalidate, s-maxage=0
Expires: Sat, 12 Oct 1991 05:00:00 GMT
<body onunload="">
失?。篊hrome 28,F(xiàn)ireFox 23,Safari 5.1.7,
成功:IE8,Opera 12.15Cache-Control: private, must-revalidate
Expires: Sat, 12 Oct 1991 05:00:00 GMT
Pragma: no-cache
Vary: *
失敗:Chrome 28,Safari 5.1.7
成功:FireFox 23,IE8,Opera 12.15Cache-Control: no-store, must-revalidate
失?。簾o
成功:Chrome 28,F(xiàn)ireFox 23,IE8,Safari 5.1.7,Opera 12.15

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
我發(fā)現(xiàn)web.config路由很有用(嘗試將其添加到答案中但似乎沒有被接受,因此在此處發(fā)布)
<configuration><system.webServer> <httpProtocol> <customHeaders> <add name="Cache-Control" value="no-cache, no-store, must-revalidate" /> <!-- HTTP 1.1. --> <add name="Pragma" value="no-cache" /> <!-- HTTP 1.0. --> <add name="Expires" value="0" /> <!-- Proxies. --> </customHeaders> </httpProtocol></system.webServer>
這是express / node.js做同樣的方式:
app.use(function(req, res, next) { res.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate'); res.setHeader('Pragma', 'no-cache'); res.setHeader('Expires', '0'); next();});
添加回答
舉報(bào)