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