使用HTML meta no-cache標簽來禁用緩存


使用HTML meta no-cache標簽來禁用緩存

如何完美滴使瀏覽器訪問一個 HTML 頁面時禁用緩存?
在測試某個 SPA 項目時,發現更改后 Chrome 瀏覽器頁面刷新還是使用之前的版本。經調查發現 Chrome 默認緩存值為 300 秒。

經測試跨瀏覽器禁止緩存的 headers 如下:
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
Cache-Control is for HTTP 1.1
Pragma is for HTTP 1.0
Expires is for proxies
因為是 HTML 頁面,可以於 HEAD 標簽內直接添加 META 標簽:
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
其他文件就需要使用服務器設置文件控制 header
==============
如果不想徹底禁止緩存可以采用下面的
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="expires" content="0" />
==============
no-cache和no-store的區別:
no-cache 可以在本地緩存,可以在代理服務器緩存,但是這個緩存要服務器驗證才可以使用
no-store 徹底得禁用緩沖,本地和代理服務器都不緩沖,每次都從服務器獲取

在某些情況下,即使Cache-Control: no-cache在響應頭文件中,IE6仍然會緩存文件。
W3C狀態no-cache:
如果no-cache指令沒有指定一個字段名稱,那么緩存絕不能使用該響應來滿足后續的請求,而不需要對源服務器進行成功的重新驗證。

在我的應用程序中,如果訪問了帶有no-cache標題的頁面,然后注銷並在瀏覽器中回放,IE6仍然會從緩存中獲取頁面(沒有向服務器發送新的/驗證請求)。在no-store標題中添加停止它這樣做。

但是如果你接受W3C的話,實際上沒有辦法控制這種行為:
歷史緩沖區可以將這些響應作為其正常操作的一部分進行存儲。
瀏覽器歷史記錄和常規HTTP緩存之間的一般差異在規范的特定子部分中描述。

=================
HTML中的Meta標簽(no-cache)
根據HTML語言標准注釋:meta標簽是對網站發展非常重要的標簽,它可以用於鑒別作者,設定頁面格式,標注內容提要和關鍵字,以及刷新頁面等等。

HTTP-EQUIV類似於HTTP的頭部協議,它回應給瀏覽器一些有用的信息,以幫助正確和精確地顯示網頁內容。

1.expires(期限)
說明:可以用於設定網頁的到期時間。一旦網頁過期,必須到服務器上重新調閱。
用法:<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">
注意:必須使用GMT的時間格式。

2.Pragma(cach模式)
說明:禁止瀏覽器從本地機的緩存中調閱頁面內容。
用法:<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
注意:這樣設定,訪問者將無法脫機瀏覽。

3.Refresh(刷新)
說明:需要定時讓網頁自動鏈接到其它網頁的話,就用這句了。
用法:<META HTTP-EQUIV="Refresh" CONTENT="5;URL=http://www.baidu.com">
注意:其中的5是指停留5秒鍾后自動刷新到URL網址。
下面標簽作用是20秒自動刷新當前頁面:
<meta http-equiv="refresh" content="20" />

4.Set-Cookie(cookie設定)
說明:如果網頁過期,那么存盤的cookie將被刪除。
用法:<META HTTP-EQUIV="Set-Cookie" CONTENT="cookievalue=xxx;
expires=Wednesday, 21-Oct-98 16:14:21 GMT; path=/"> 
注意:必須使用GMT的時間格式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM