一召烂、什么是瀏覽器緩存贸街?
常見的緩存方式分為三類:服務(wù)器緩存、CDN緩存茅姜、客戶端緩存
瀏覽器緩存屬于客戶端緩存
瀏覽器緩存主要分為強緩存和協(xié)商緩存兩種:
- 強緩存:第一次加載資源時將資源緩存到本地闪朱。再次請求時,直接使用本次緩存的資源(無需再次與服務(wù)端通信)
- 協(xié)商緩存:第一次加載資源時將資源緩存到本地钻洒。再次請求時奋姿,將資源的相關(guān)信息發(fā)送給服務(wù)器,由服務(wù)器判斷瀏覽器能否使用本地緩存素标。若可以称诗,則直接使用本地緩存;若不可以头遭,則再次請求服務(wù)器獲取最新資源
二寓免、為什么有瀏覽器緩存?
- 減少冗余的數(shù)據(jù)傳輸
- 減少對通信資源的消耗
三计维、如何設(shè)置瀏覽器緩存袜香?
瀏覽器緩存主要依靠HTTP請求的header字段來設(shè)置,其中涉及到緩存的頭部字段有:expires鲫惶、cache-control蜈首、Last-Modified、If-Modified-Since剑按、Etag疾就、If-None-Match
3.1 強緩存
- 和強緩存相關(guān)的header字段有:expires、cache-control: max-age=number
- expires 值為一個時間字符串艺蝴,若獲取資源的時間在 expires 之前猬腰,則本地緩存有效,否則猜敢,則過期
- cache-control: max-age=number number 代表有效期姑荷。資源第一次的請求時間和這個有效期時間一起計算出資源過期時間。若獲取資源的時間在過期時間之前缩擂,則本地緩存有效鼠冕,否則,則過期
3.2 協(xié)商緩存
- Last-Modified/If-Modified-Since:這種方式的原理是:當(dāng)?shù)谝淮握埱筚Y源時胯盯,服務(wù)器出了返回資源懈费,還返回一個header字段,值為這個資源在服務(wù)器上的最后修改時間博脑。再次請求數(shù)據(jù)時憎乙,瀏覽器會在header字段中帶上這個值票罐,由服務(wù)器與當(dāng)前最新的 最后修改時間 做比對。若一致泞边,則返回 304 Not Modified该押,瀏覽器直接使用本地緩存
- Etag/If-None-Match:這種方式的原理是:由服務(wù)器為每個資源生成唯一標(biāo)識字符串,當(dāng)資源有變化時阵谚,這個字符串會改變蚕礼。通過判斷這個唯一標(biāo)識是否一致來確定本地緩存是否能夠使用。若一致梢什,則返回304 Not Modified奠蹬,瀏覽器直接使用本地緩存