瀏覽器快取機制

2021-09-13 18:02:52 字數 1896 閱讀 5317

可放到檔案,記憶體中(如session),還有cache(快取記憶體),還有 cookie,session,viewstate,這些是我們經常用到的,但可以認為他們是快取資料。其實cache跟session有相似功能,但 cache可在**中設定過期時間,依賴項。所謂依賴項(例如:微軟的類cachedependcy sqlcachedependency)當依賴項變動了,系統會通知cache過期,無效。以上只是說快取,快取可是有伺服器快取,客戶端快取啊。

http協議中關於快取的資訊頭關鍵字包括cache-control(http1.1),pragma(http1.0),last-modified,expires等。

cache-control 是最重要的規則。這個字段用於指定所有快取機制在整個請求/響應鏈中必須服從的指令。這些指令指定用於阻止快取對請求或響應造成不利干擾的行為。這些指令 通常覆蓋預設快取演算法。快取指令是單向的,即請求中存在乙個指令並不意味著響應中將存在同乙個指令。

cache-control 定義是:cache-control = 「cache-control」 「:」 cache-directive。

cache-control是關於瀏覽器快取的最重要的設定,因為它覆蓋其他設定,比如 expires 和 last-modified。另外,由於瀏覽器的行為基本相同,這個屬性是處理跨瀏覽器快取問題的最有效的方法。

expires 頭部字段提供乙個日期和時間,響應在該日期和時間後被認為失效。失效的快取條目通常不會被快取(無論是**快取還是使用者**快取)返回,除非首先通過原始 伺服器(或者擁有該實體的最新副本的中介快取)驗證。(注意:cache-control max-age 和 s-maxage 將覆蓋 expires 頭部。)

expires 字段接收以下格式的值:「expires: sun, 08 nov 2009 03:37:26 gmt」。如果檢視內容時的日期在給定的日期之前,則認為該內容沒有失效並從快取中提取出來。反之,則認為該內容失效,快取將採取一些措施。表 3-6 表明針對不同使用者操作的不同瀏覽器的行為。

表 3. 當使用者開啟乙個新的瀏覽器視窗時的失效操作

last-modified 實體頭部字段值通常用作乙個快取驗證器。簡單來說,如果實體值在 last-modified 值之後沒有被更改,則認為該快取條目有效。etag 響應頭部字段值是乙個實體標記,它提供乙個 「不透明」 的快取驗證器。這可能在以下幾種情況下提供更可靠的驗證:不方便儲存修改日期;http 日期值的 one-second 解決方案不夠用;或者原始伺服器希望避免由於使用修改日期而導致的某些衝突。

不同的瀏覽器有不同的配置行為。表 7-10 表明針對不同使用者操作的不同瀏覽器的行為。

表 7. 當使用者開啟乙個新的瀏覽器視窗時的 last-modified e-tag 操作

如果您不定義任何快取相關設定,則不同的瀏覽器有不同的行為。有時,同乙個瀏覽器在相同的情形下每次執行時的行為都是不同的。情況可能很複雜。另外,有些不該快取的內容如果被快取,將會導致安全問題。 不同的瀏覽器有不同的行為。表 11 展示了不同的瀏覽器行為。

操作行為

開啟新視窗

如果指定cache- control的值為private、no-cache、must-revalidate,那麼開啟新視窗訪問時都會重新訪問伺服器。而如果指定了 max-age值,那麼在此值內的時間裡就不會重新訪問伺服器,例如:cache-control: max-age=5 表示當訪問此網頁後的5秒內再次訪問不會去伺服器.

在位址列回車

如果值為private或must-revalidate,則只有第一次訪問時會訪問伺服器,以後就不再訪問。如果值為no-cache,那麼每次都會訪問。如果值為max-age,則在過期之前不會重複訪問。

按後退按扭

如果值為private、must-revalidate、max-age,則不會重訪問,而如果為no-cache,則每次都重複訪問.

按重新整理按扭

無論為何值,都會重複訪問.

瀏覽器快取機制

最近在準備優化日誌請求時遇到了一些令人疑惑的問題,比如為什麼響應頭里出現了兩個 cache control 為什麼明明設定了 no cache 卻還是發請求,為什麼多次訪問時有時請求裡帶了 etag,有時又沒有帶?等等。後來查了一些資料以及同事親自驗證,總算對這些問題有了個清晰的理解,現在整理出來以...

瀏覽器快取機制

當我們瀏覽乙個頁面發現有異常時,通常考慮的就是書不是瀏覽器做了快取呢,按ctrl f5重新請求一次就能請求到沒有快取的頁面,這個是為什麼呢。首先,ctrl f5組合鍵重新整理頁面,那麼瀏覽器會直接向目標url傳送請求,而不再使用瀏覽器快取的資料。其次,當請求到達伺服器端依然有可能出現使用伺服器端的資...

瀏覽器快取機制

瀏覽器快取機制 瀏覽器快取機制,其實主要就是 協議定義的快取機制 如 expires cache control 等 但是也有非 協議定義的快取機制,如使用 html meta 標籤,web 開發者可以在 html 頁面的節點中加入 標籤,如下 上述 的作用是告訴瀏覽器當前頁面不被快取,每次訪問都需...