淺談瀏覽器HTTP的緩存機(jī)制
責(zé)編:樂樂 | 來自:vajoy
鏈接:cnblogs.com/vajoy/p/5341664.html
正文
針對(duì)瀏覽器的http緩存的分析也算是老生常談了,每隔一段時(shí)間就會(huì)冒出一篇不錯(cuò)的文章,其原理也是各大公司面試時(shí)幾乎必考的問題。
之所以還寫一篇這樣的文章,是因?yàn)榻诙荚诟阈录夹g(shù),想“回歸”下基礎(chǔ),也希望盡量總結(jié)的更詳盡些。
那么你是否還需要閱讀本篇文章呢?可以試著回答下面這個(gè)問題:
我們?cè)谠L問百度首頁的時(shí)候,會(huì)發(fā)現(xiàn)不管怎么刷新頁面,靜態(tài)資源基本都是返回 200(from cache):

隨便點(diǎn)開一個(gè)靜態(tài)資源是醬的:

哎喲有Response報(bào)頭數(shù)據(jù)呢,看來服務(wù)器也正常返回了etag什么鬼的應(yīng)有盡有,那狀態(tài)200不是應(yīng)該對(duì)應(yīng)的非緩存狀態(tài)么?要from cache的話不是應(yīng)該返回304才合理么?
難道是度娘的服務(wù)器故障了嗎?
如果你知道答案,那就可以忽略本文了。

http報(bào)文中與緩存相關(guān)的首部字段
我們先來瞅一眼RFC2616規(guī)定的47種http報(bào)文首部字段中與緩存相關(guān)的字段,事先了解一下能讓咱在心里有個(gè)底:
1. 通用首部字段(就是請(qǐng)求報(bào)文和響應(yīng)報(bào)文都能用上的字段)

2. 請(qǐng)求首部字段

3. 響應(yīng)首部字段

4. 實(shí)體首部字段

后續(xù)大體也會(huì)依次介紹它們。

場(chǎng)景模擬
為方便模擬各種緩存效果,我們建個(gè)非常簡(jiǎn)單的場(chǎng)景。
1. 頁面文件
我們建個(gè)非常簡(jiǎn)單的html頁面,上面只有一個(gè)本地樣式文件和圖片:
