瀏覽器緩存

瀏覽器HTTP緩存

緩存的分類

緩存分為服務(wù)器端緩存和客戶端緩存瓣窄。

服務(wù)器緩存又分為代理服務(wù)器和反向代理服務(wù)器緩存溢吻,其中廣泛應(yīng)用的CDN也是一種服務(wù)器端緩存乌庶,目的都是讓用戶的請(qǐng)求走“捷徑”,并且都是緩存圖片左痢,文件等靜態(tài)資源靡羡。

客戶端緩存一般指的是瀏覽器緩存,目的就是加速各種靜態(tài)資源的訪問(wèn)抖锥,想想現(xiàn)在的大型網(wǎng)站亿眠,隨便一個(gè)頁(yè)面都是一兩百個(gè)請(qǐng)求,每天pv(page view磅废, 頁(yè)面瀏覽量)都是億級(jí)別纳像,如果沒(méi)有緩存,用戶體驗(yàn)會(huì)急劇下降拯勉,同時(shí)服務(wù)器壓力和網(wǎng)絡(luò)帶寬都面臨嚴(yán)重的考驗(yàn)竟趾。

瀏覽器緩存機(jī)制詳解

瀏覽器請(qǐng)求流程
  • 瀏覽器第一次請(qǐng)求流程圖

    image
  • 瀏覽器再次請(qǐng)求流程圖

    image
重要概念
  • Expires策略

    • 例: Expires:Wed, 10 Aug 2016 12:07:31 GMT
    • Expires是Web服務(wù)器響應(yīng)信息頭字段,在響應(yīng)http請(qǐng)求時(shí)告訴瀏覽器在過(guò)期時(shí)間前瀏覽器可以直接從瀏覽器緩存取數(shù)據(jù)宫峦,而無(wú)需再次請(qǐng)求岔帽。不過(guò)Expires是HTTP1.0 的東西,現(xiàn)在瀏覽器均默認(rèn)使用HTTP1.1导绷, 所以它的作用基本忽略犀勒。Expires的一個(gè)缺點(diǎn)就是,翻譯的到期時(shí)間是服務(wù)器端的時(shí)間妥曲,這樣存在一個(gè)問(wèn)題贾费,如果客戶端的時(shí)間和服務(wù)器的時(shí)間相差很大,那么誤差就很大檐盟,所以在HTTP1.1版開(kāi)始褂萧,使用Cache-Control:max-age=秒 代替。
  • Cache-control策略

    • 例: Cache-Control: public, max-age=676193
    • Cache-Control與Expires的作用一致葵萎,都是指明當(dāng)前資源的有效期导犹,控制瀏覽器是否直接從瀏覽器緩存取數(shù)據(jù)還是重新發(fā)送請(qǐng)求到服務(wù)器取數(shù)據(jù)。只不過(guò)Cache-Control的選擇更多羡忘,設(shè)置更細(xì)致谎痢,如果同時(shí)設(shè)置的話,其優(yōu)先級(jí)高于Expires
    • 有以下設(shè)置
      • max-age(單位s)
        • 指定設(shè)置緩存的最大有效時(shí)間卷雕。當(dāng)瀏覽器向服務(wù)器發(fā)送請(qǐng)求后节猿,在max-age這段時(shí)間里瀏覽器就不會(huì)再向服務(wù)器發(fā)送請(qǐng)求了。即使服務(wù)器上的資源發(fā)生了變化爽蝴,瀏覽器也不會(huì)得到通知沐批。
      • public
        • 指定響應(yīng)會(huì)被緩存,并且在多用戶間共享蝎亚,也就是下圖的意思九孩。如果沒(méi)有指定為public還是private,則默認(rèn)為public


          image
      • private
        • 響應(yīng)只作為私有的緩存发框,不能再用戶間共享躺彬。如果要求HTTP認(rèn)證,響應(yīng)會(huì)自動(dòng)設(shè)置為private


          image
      • no-cache
        • 指定不緩存響應(yīng)梅惯,表明資源不進(jìn)行緩存
        • 但是設(shè)置了no-cache之后并不代表瀏覽器不緩存宪拥,而是在緩存前要向服務(wù)器確認(rèn)資源是否被更改。
      • no-store
        • 絕對(duì)禁止緩存铣减,如果用了這個(gè)命令當(dāng)然就是不會(huì)進(jìn)行緩存啦~每次請(qǐng)求資源都要從服務(wù)器重新獲取她君。
  • Last-Modified/If-Modified-Since策略

    • 服務(wù)器端文件的最后修改時(shí)間,需要和Cache-Control共同使用葫哗,是檢查服務(wù)器端資源是否更新的一種方式缔刹。當(dāng)瀏覽器再次進(jìn)行請(qǐng)求時(shí),會(huì)向服務(wù)器發(fā)送If-Modified-Since報(bào)頭劣针,詢問(wèn)Last-modified時(shí)間點(diǎn)之后資源是否被修改過(guò)校镐。如果沒(méi)有修改,則返回碼為304捺典,使用緩存鸟廓;如果修改過(guò),則再次去服務(wù)器請(qǐng)求資源襟己,返回碼和首次請(qǐng)求相同為200引谜,資源為服務(wù)器最新資源。
  • Etag/If-None-Match

    • 根據(jù)實(shí)體內(nèi)容生成一段hash字符串稀蟋,標(biāo)識(shí)資源的狀態(tài)煌张,由服務(wù)端產(chǎn)生。瀏覽器會(huì)將這串字符串傳回服務(wù)器退客,驗(yàn)證資源是夠修改過(guò)骏融,如果沒(méi)有修改,則返回碼為304萌狂,使用緩存档玻;如果修改過(guò),則再次去服務(wù)器請(qǐng)求資源茫藏,返回碼和首次請(qǐng)求時(shí)間為200误趴,資源為服務(wù)器最新資源。
  • 既生Last-Modified何生Etag务傲?

    • Last-Modified標(biāo)注的最后修改只能精確到秒級(jí)凉当,如果某些文件在1秒鐘之內(nèi)被修改了很多次的話枣申,它將不能準(zhǔn)確標(biāo)注文件的修改時(shí)間
    • 如果某些文件會(huì)被定期生成,當(dāng)有時(shí)內(nèi)容并沒(méi)有任何變化看杭,但Last-Modified卻改變了忠藤,導(dǎo)致文件沒(méi)法使用緩存
    • 有可能存在服務(wù)器沒(méi)有準(zhǔn)確獲取文件修改時(shí)間,或者與代理服務(wù)器時(shí)間不一致等情形
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末楼雹,一起剝皮案震驚了整個(gè)濱河市模孩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌贮缅,老刑警劉巖榨咐,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異谴供,居然都是意外死亡块茁,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門桂肌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)龟劲,“玉大人,你說(shuō)我怎么就攤上這事轴或〔” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵照雁,是天一觀的道長(zhǎng)蚕愤。 經(jīng)常有香客問(wèn)我,道長(zhǎng)饺蚊,這世上最難降的妖魔是什么萍诱? 我笑而不...
    開(kāi)封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮污呼,結(jié)果婚禮上裕坊,老公的妹妹穿的比我還像新娘。我一直安慰自己燕酷,他們只是感情好籍凝,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著苗缩,像睡著了一般饵蒂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上酱讶,一...
    開(kāi)封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天退盯,我揣著相機(jī)與錄音,去河邊找鬼。 笑死渊迁,一個(gè)胖子當(dāng)著我的面吹牛慰照,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播琉朽,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼焚挠,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了漓骚?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤榛泛,失蹤者是張志新(化名)和其女友劉穎蝌蹂,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體曹锨,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡孤个,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了沛简。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片齐鲤。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖椒楣,靈堂內(nèi)的尸體忽然破棺而出给郊,到底是詐尸還是另有隱情,我是刑警寧澤捧灰,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布淆九,位于F島的核電站,受9級(jí)特大地震影響毛俏,放射性物質(zhì)發(fā)生泄漏炭庙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一煌寇、第九天 我趴在偏房一處隱蔽的房頂上張望焕蹄。 院中可真熱鬧,春花似錦阀溶、人聲如沸腻脏。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)迹卢。三九已至,卻和暖如春徒仓,著一層夾襖步出監(jiān)牢的瞬間腐碱,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留症见,地道東北人喂走。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像谋作,于是被迫代替她去往敵國(guó)和親芋肠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

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

  • 轉(zhuǎn)載:瀏覽器緩存知識(shí)小結(jié)及應(yīng)用 閱讀目錄 1. 瀏覽器緩存基本認(rèn)識(shí) 2. 強(qiáng)緩存的原理 3. 強(qiáng)緩存的管理 4. ...
    meng_philip123閱讀 1,087評(píng)論 4 18
  • 瀏覽器緩存遵蚜,也就是客戶端緩存帖池,既是網(wǎng)頁(yè)性能優(yōu)化里面靜態(tài)資源相關(guān)優(yōu)化的一大利器,也是無(wú)數(shù)web開(kāi)發(fā)人員在工作過(guò)程不可...
    單純的土豆閱讀 405評(píng)論 0 1
  • 瀏覽器緩存吭净,也就是客戶端緩存睡汹,既是網(wǎng)頁(yè)性能優(yōu)化里面靜態(tài)資源相關(guān)優(yōu)化的一大利器,也是無(wú)數(shù)web開(kāi)發(fā)人員在工作過(guò)程不可...
    Www劉閱讀 566評(píng)論 0 1
  • 瀏覽器緩存概述 瀏覽器緩存分為強(qiáng)緩存和協(xié)商緩存寂殉。當(dāng)客戶端請(qǐng)求某個(gè)資源時(shí)囚巴,獲取緩存的流程如下: 先根據(jù)這個(gè)資源的一些...
    單純的土豆閱讀 282評(píng)論 0 0
  • 關(guān)于司考行政法科目老師的選擇 2017-05-23 15:291司法考試 關(guān)于行政法科目老師的選擇 只談兩個(gè)老師徐...
    warland閱讀 3,982評(píng)論 0 1