瀏覽器緩存

緩存分為服務(wù)端緩存(比如 Nginx侈百、Memcached)和客戶端緩存(比如 瀏覽器)瓮下。

以下是關(guān)于瀏覽器緩存的一些記錄

緩存機(jī)制

瀏覽器緩存控制機(jī)制有兩種:

1、Meta標(biāo)簽

<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="0">

清除瀏覽器中的緩存钝域,必須從服務(wù)端獲取最新內(nèi)容讽坏,但不是所有瀏覽器都支持

2、HTTP頭信息

Expires:即在 HTTP 頭中指明具體失效的時間(HTTP/1.0)

Cache Control:max-age 在 HTTP 頭中按秒指定失效的時間例证,優(yōu)先級高于Expires(HTTP/1.1)

Last-Modified/If-Modified-Since:文件最后一次修改的時間(精度是秒路呜,HTTP/1.0),需要Cache-Contral過期

Etag:當(dāng)前資源在服務(wù)器的唯一標(biāo)識(生成規(guī)則由服務(wù)器決定)ETag的值,默認(rèn)是對文件的索引節(jié)(INode)拣宰,大械程椤(Size)和最后修改時間(MTime)進(jìn)行Hash后得到的巡社,優(yōu)先級高于Last-Modified;在分布式的Web系統(tǒng)中肥荔,當(dāng)訪問落在不同的物理機(jī)上時會返回不同的ETag,進(jìn)而導(dǎo)致304失效朝群,降級為200請求(HTTP/1.1)姜胖,需要Cache-Contral過期

Pragma:no-cache 兼容HTTP/1.0

緩存狀態(tài)碼

200 OK (from cache) 是瀏覽器沒有跟服務(wù)器確認(rèn)誉帅,直接用了瀏覽器緩存;

304 Not Modified 是瀏覽器和服務(wù)器多確認(rèn)了一次緩存有效性右莱,再用的緩存慢蜓。

304 Not Modified 比 200 OK (from cache) 慢晨抡,指的是瀏覽器還向服務(wù)器確認(rèn)了下 "If-Not-Modified",才用的緩存

Cache驗證

Freshness驗證

和瀏覽器策略以及Cache Control(HTTP/1.1)與Expires(HTTP/1.0)有關(guān)

最好的請求是不必與服務(wù)器進(jìn)行通信的請求:通過響應(yīng)的本地緩存如捅,可以避免所有的網(wǎng)絡(luò)延遲以及數(shù)據(jù)傳輸?shù)臄?shù)據(jù)成本镜遣。

Cache-Contral

  • no-cache 必須先與服務(wù)器確認(rèn)返回的響應(yīng)是否被更改

  • no-store 直接禁止瀏覽器和所有中繼緩存存儲返回的任何版本的響應(yīng)

  • public 響應(yīng)可被任何緩存區(qū)緩存

  • private 瀏覽器可以緩存private響應(yīng)烈涮,不允許任何中繼緩存對其進(jìn)行緩存窖剑;例如西土,用戶瀏覽器可以緩存包含用戶私人信息的HTML網(wǎng)頁需了,但是CDN不能緩存

  • max-age 緩存最長時間

緩存策略

http-cache-decision-tree.png

HTML5 Boilerplate 項目nginx配置文件樣例

# cache.appcache, your document html and data
location ~* \.(?:manifest|appcache|html?|xml|json)$ {
  expires -1;
}

# Feed
location ~* \.(?:rss|atom)$ {
  expires 1h;
}

# Media: images, icons, video, audio, HTC
location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
  expires 1M;
  access_log off;
  add_header Cache-Control "public";
}

# CSS and Javascript
location ~* \.(?:css|js)$ {
  expires 1y;
  access_log off;
}

Validation驗證

Last-Modified和ETag

通過驗證令牌可以進(jìn)行高效的資源更新檢查:如果資源未更改肋乍,則不會傳輸任何數(shù)據(jù)

http-cache-control.png
Status Code:304 Not Modified

Response Head
ETag:"578ba64c-7ddf"
Last-Modified:Sun, 17 Jul 2016 15:37:48 GMT

Request Head
If-Modified-Since:Sun, 17 Jul 2016 15:37:48 GMT
If-None-Match:"578ba64c-7ddf"
http_cache.png

200 or 304

在沒有設(shè)置Cache-Contral的情況下堪伍,設(shè)置Last-Modified和ETag緩存觅闽,會出現(xiàn)200(from cache)和304 交替出現(xiàn)的情況

設(shè)置Cache-Contral的情況下蛉拙,過期刷新會出現(xiàn)304(如果有更新內(nèi)容,則是200)吮廉,之后再過期之前刷新都是200(from cache)硫惕。如果要確保要向服務(wù)端確認(rèn),可以將Cache-Contral的max-age設(shè)置為0踪旷。

chrome 測試 刷新 和 輸入URL回車 測試并不會影響200(from cache)和304 的出現(xiàn)

緩存方案

較長的過期時間令野,節(jié)省帶寬气破,提高性能餐抢;更改資源的網(wǎng)址,強(qiáng)制用戶下載新響應(yīng)

http-cache-hierarchy.png

按需更新缤言,精確的緩存控制

靜態(tài)資源CDN部署

更資源發(fā)布路徑實現(xiàn)非覆蓋式發(fā)布(多版本共存)

更多資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末间景,一起剝皮案震驚了整個濱河市艺智,隨后出現(xiàn)的幾起案子十拣,更是在濱河造成了極大的恐慌父晶,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異糠溜,居然都是意外死亡直撤,警方通過查閱死者的電腦和手機(jī)谋竖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門蓖乘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嘉抒,“玉大人些侍,你說我怎么就攤上這事÷旎幔” “怎么了颂龙?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵措嵌,是天一觀的道長企巢。 經(jīng)常有香客問我让蕾,道長探孝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮庇配,結(jié)果婚禮上捞慌,老公的妹妹穿的比我還像新娘柬批。我一直安慰自己氮帐,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冰更,像睡著了一般蜀细。 火紅的嫁衣襯著肌膚如雪戈盈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天痊夭,我揣著相機(jī)與錄音她我,去河邊找鬼番舆。 笑死矾踱,一個胖子當(dāng)著我的面吹牛呛讲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播刃宵,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼关面!你這毒婦竟也來了等太?” 一聲冷哼從身側(cè)響起缩抡,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤瞻想,失蹤者是張志新(化名)和其女友劉穎蘑险,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泼差,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡滔灶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了潜沦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绪氛。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡争占,死狀恐怖序目,靈堂內(nèi)的尸體忽然破棺而出猿涨,到底是詐尸還是另有隱情,我是刑警寧澤澡绩,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站步鉴,受9級特大地震影響璃哟,放射性物質(zhì)發(fā)生泄漏沮稚。R本人自食惡果不足惜蕴掏,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望藐石。 院中可真熱鬧定拟,春花似錦青自、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽获高。三九已至念秧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間庄吼,已是汗流浹背总寻。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工渐行, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留祟印,地道東北人粟害。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓套鹅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親菱魔。 傳聞我的和親對象是個殘疾皇子吟孙,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載:瀏覽器緩存知識小結(jié)及應(yīng)用 閱讀目錄 1. 瀏覽器緩存基本認(rèn)識 2. 強(qiáng)緩存的原理 3. 強(qiáng)緩存的管理 4. ...
    meng_philip123閱讀 1,089評論 4 18
  • 瀏覽器緩存,也就是客戶端緩存栋艳,既是網(wǎng)頁性能優(yōu)化里面靜態(tài)資源相關(guān)優(yōu)化的一大利器,也是無數(shù)web開發(fā)人員在工作過程不可...
    單純的土豆閱讀 411評論 0 1
  • 瀏覽器緩存凿宾,也就是客戶端緩存初厚,既是網(wǎng)頁性能優(yōu)化里面靜態(tài)資源相關(guān)優(yōu)化的一大利器孙技,也是無數(shù)web開發(fā)人員在工作過程不可...
    Www劉閱讀 568評論 0 1
  • 緩存一直是前端優(yōu)化的主戰(zhàn)場, 利用好緩存就成功了一半. 本篇從http請求和響應(yīng)的頭域入手, 讓你對瀏覽器緩存有個...
    易斯大大閱讀 784評論 0 1
  • Web緩存分為很多種亚情,比如數(shù)據(jù)庫緩存楞件,代理服務(wù)器緩存裳瘪,還有我們熟悉的CDN緩存彭羹,以及瀏覽器緩存。 緩存的重要性不用...
    張歆琳閱讀 2,145評論 5 39