您好,登錄后才能下訂單哦!
本篇內容介紹了“瀏覽器的緩存機制是怎樣的”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
瀏覽器是有緩存的,做開發的同學都知道瀏覽器緩存是非常蛋疼的問題,特別是前端開發的同學,明明改了為什么還沒有生效,經常要去清理瀏覽器的緩存,或者禁用瀏覽器的緩存功能。
我們知道在瀏覽器中按F5是刷新頁面,CTRL+F5是強制刷新頁面,這兩個有什么區別呢?
F5刷新會使用瀏覽器的緩存。
CTRL+F5刷新是不會使用緩存的,每次請求都會請求服務器的最新資源,它的原理就是在請求頭上加上一些參數告訴服務器要獲取最新的資源。
當使用普通刷新時,瀏覽器在請求之前會檢查Expires這個值,如果Expires時間小于當前時間說明緩存已經失效,重新發起獲取資源。
另外,還有一個參數Last-Modified,即服務器返回的最后的修改時間,瀏覽器在請求時會帶上If-Modified-Since這個值,服務器判斷Last-Modified與If-Modified-Since是否一致,如果一致則告訴瀏覽器是最新的,服務器不返回新的資源。
與Last-Modified功能類似的還有一個參數:Etag,即讓服務器給每個頁面分配一個唯一編號,然后可以通過這個編號來確定頁面是不是最新的,這個使用較少,這里不再詳述。
上面為強制刷新的情況,瀏覽器在請求頭做了以下設置:
Cache-control: no-cache
Pragma: no-cache
即表示不使用本地的緩存直接向服務器重新獲取資源。
下面是關于Cache-control的參數定義:
public | 所有內容都將被緩存,客戶端和代理服務器都可緩存 |
private | 內容只緩存到私有緩存中,僅客戶端可以緩存,代理服務器不可緩存 |
no-cache | 必須先與服務器確認返回的響應是否被更改,然后才能使用該響應來滿足后續對同一個網址的請求。因此,如果存在合適的驗證令牌 (ETag),no-cache 會發起往返通信來驗證緩存的響應,如果資源未被更改,可以避免下載。 |
no-store | 所有內容都不會被緩存到緩存或 Internet 臨時文件中 |
must-revalidation/ proxy-revalidation | 如果緩存的內容失效,請求必須發送到服務器/代理以進行重新驗證 |
max-age | 緩存的內容將在 xxx 秒后失效, 這個選項只在HTTP 1.1可用, 并如果和Last-Modified一起使用時, 優先級較高 |
Cache-control這個參數在所有瀏覽器中兼容性很好,而且它的優先級也比較高,和其他像Expires同時使用時會覆蓋其他的字段,Pragma作用與Cache-control類似,最常用使用的是Pragma: no-cache和Cache-control結合使用告訴服務器不要使用緩存。
“瀏覽器的緩存機制是怎樣的”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。