web面試常問http緩存解析相關(guān)
為什么要有http緩存?
1.當(dāng)輸入網(wǎng)址到加載出頁面, 電腦會經(jīng)過"CPU計算、網(wǎng)絡(luò)請求、頁面渲染"等一系列步驟;
2.“網(wǎng)絡(luò)請求"是其中最不確定、最耗時的一個環(huán)節(jié), 針對這個環(huán)節(jié), 我們可以通過"減少網(wǎng)絡(luò)請求的體積和數(shù)量”, 來更快加載出頁面, 這是"緩存"存在的原因;
3.通過"緩存"可以實現(xiàn)"減少網(wǎng)絡(luò)請求的體積和數(shù)量";
http緩存之 強(qiáng)制緩存
1.當(dāng)?shù)谝淮卧L問某個網(wǎng)站, 該網(wǎng)站后端如果認(rèn)為請求的資源(css、js、圖片等)應(yīng)該被瀏覽器緩存下來
2.后端會在響應(yīng)頭中添加一個配置:
Cache-Control: max-age=12146545
(單位:秒)
3.當(dāng)我們再次請求該網(wǎng)站時, 會直接從本地緩存讀取資源, 不會向服務(wù)器請求緩存的資源
4.如果緩存資源過期了, 會從服務(wù)端請求所有資源, 并再次緩存加了配置項的資源
5.Cache-Control 的設(shè)置, 由后端開發(fā)決定, 不涉及前端, 當(dāng)然也可以設(shè)置成不緩存: Cache-Control: no-cache
http緩存之 協(xié)商緩存(對比緩存)
1.協(xié)商緩存是服務(wù)端的一種緩存策略;
2.當(dāng)?shù)谝淮卧L問某個網(wǎng)站, 發(fā)送請求時, 服務(wù)器會返回資源和資源標(biāo)識. 瀏覽器會把資源和資源標(biāo)識都緩存下來;
3.當(dāng)再次發(fā)送請求時, 會帶上資源標(biāo)識, 服務(wù)器會把請求中的資源標(biāo)識, 和服務(wù)器中的最新資源標(biāo)識, 作對比:
- 如果一致: 服務(wù)器只返回
304
, 瀏覽器會在緩存中直接獲取資源(減少請求數(shù)據(jù)的體積); - 如果不一致: 服務(wù)器會返回
200
和請求的資源
及最新資源標(biāo)識
(體積會相對大一些)
協(xié)商緩存中的資源標(biāo)識
資源標(biāo)識有兩種, 發(fā)送請求時, 都是放在請求頭中:
Last-Modified
: 資源上一次修改的時間
If-Modified-Since: xxxxx (鍵名和Last-Modified不一樣)
ETag
: 資源對象的唯一字符串
If-None-Match: xxxx(鍵名和Last-Modified不一樣)
優(yōu)先級的問題
一般來說會優(yōu)先使用 ETag , 因為 Last-Modified 的值只精確到 秒級
文件如果每隔一段時間都重復(fù)生成,但內(nèi)容相同。
Last-Modified 會每次返回資源文件,即便內(nèi)容相同。
但是Etag可以判斷出文件內(nèi)容相同,就會返回304,使用緩存
以上就是web面試之http緩存解析的詳細(xì)內(nèi)容,更多關(guān)于web面試http緩存的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
如何讓計數(shù)器只對新進(jìn)用戶計數(shù)?
如何讓計數(shù)器只對新進(jìn)用戶計數(shù)?...2006-11-11如何讓用戶再次訪問我的網(wǎng)站時不需再提交相關(guān)信息?
如何讓用戶再次訪問我的網(wǎng)站時不需再提交相關(guān)信息?...2006-11-11