狀態(tài)碼304執(zhí)行過程分析

1.狀態(tài)碼304

客戶端有緩存的文檔發(fā)出一個條件性的請求(提供If-Modified-Since頭標(biāo)識客戶端緩存修改時間),服務(wù)器告訴客戶端怀浆,原來緩存的文檔還可以繼續(xù)使用谊囚。

2.具體過程

  • 客戶端請求一個資源時,發(fā)現(xiàn)自己緩存的文件有Last Modified执赡,那么在請求中會包含If Modified Since,這個時間就是緩存文件的最后修改時間镰踏。
  • 服務(wù)器根據(jù)這個時間和當(dāng)前請求文件的修改時間,就可以確定是否返回304還是200沙合,對于靜態(tài)文件奠伪,服務(wù)器會自動完成最后修改時間的比較,完成緩存或者更新首懈,返回304則表明绊率,該資源從上次緩存到現(xiàn)在并沒有修改過,條件請求可以確本柯模客戶端資源是最新的同時妹笆,避免每次都請求完整資源給服務(wù)器帶來的性能問題烈炭。
  • 對于動態(tài)頁面枝誊,往往沒有Last Modified信息逻淌,瀏覽器和代理服務(wù)器不會做緩存,每次請求的時候都會完成一次200的請求盯仪。
  • 如果要對動態(tài)html頁面做緩存加速紊搪,那么服務(wù)器要在響應(yīng)報文的頭部添加Last Modified定義,再根據(jù)請求報文中的If Modified Since來決定返回200還是304全景,如果返回304則返回的只是一個響應(yīng)報文的頭部耀石,不包含主題部分,從而大大降低帶寬的消耗爸黄,提高用戶體驗滞伟。

3.瀏覽器判斷緩存是否可用的流程

process.png
  • 瀏覽器如何判斷緩存是否過期?
    根據(jù)相應(yīng)報文的Cache-Control和Expires這兩個屬性炕贵,這兩個屬性記錄了資源過期的時間梆奈,在該日期前的所有對資源的請求都會直接使用瀏覽器緩存,返回200狀態(tài)碼称开,而不會向服務(wù)器請求亩钟,兩個屬性都存在時Cache-Control優(yōu)先級較高乓梨。

  • 服務(wù)端如何判斷緩存已失效?
    Last-Modified
    當(dāng)緩存過期時清酥,發(fā)現(xiàn)資源具有Last-Modified聲明扶镀,則在請求頭部帶上If-Modified-Since,服務(wù)器收到相應(yīng)請求后焰轻,會將這個信息與請求資源最后修改時間進行對比臭觉,如果資源修改時間較新,則說明資源被改動了辱志,則相應(yīng)HTTP200和相應(yīng)資源胧谈,若最后修改時間較舊,說明資源無新修改荸频,則相應(yīng)HTTP304,瀏覽器直接繼續(xù)使用所保存的cache
    Etag
    資源在服務(wù)器的唯一標(biāo)識(生成規(guī)則由服務(wù)器決定)客冈,緩存過期時旭从,發(fā)現(xiàn)資源帶有Etag聲明,則會在請求頭部帶上If-None-Match场仲,服務(wù)器收到請求后會與被請求資源的相應(yīng)校驗串對比和悦,決定返回200或204
    注意:服務(wù)器可以根據(jù)自己的緩存機制的需要,選擇ETag或Last-Modified來做緩存判斷的依據(jù)渠缕,甚至可以兩個同時參考

  • 為什么有Last-Modified還要Etag鸽素?
    1.Last-Modified標(biāo)注的時間只能精確到秒
    2.如果文件被定期生成,當(dāng)有時內(nèi)容沒有什么變化亦鳞,但Last-Modified改變了馍忽,導(dǎo)致文件沒法使用緩存
    3.服務(wù)器沒有準(zhǔn)確獲取文件修改時間

  • 200OK(from cache)和304 Not Modified的區(qū)別?
    1.200OK不會向服務(wù)器發(fā)送請求燕差,本地的資源沒有過期遭笋,直接使用本地緩存文件。
    2.304Not Modified則向服務(wù)器詢問徒探,如果服務(wù)器認(rèn)為瀏覽器的緩存還能使用瓦呼,則返回304。
    一般手動刷新時测暗,都會向服務(wù)器詢問本地緩存是否能使用央串,返回304

4.Cache-Control策略

指明資源的有效期,選擇更多設(shè)置更細(xì)致碗啄,與Expires同時設(shè)置质和,優(yōu)先級高于Expires,其中max-age指示資源的過期時間
而Expires策略則是,返回的到期時間為服務(wù)端的時間稚字,客戶端時間和服務(wù)器時間相差很大侦另,那么誤差就會很大,在HTTP1.1版開始,使用Cache-Control的max-age字段來代替
例如褒傅,外網(wǎng)一般會對html文件設(shè)置一個較短的緩存時間弃锐,如cache-control: max-age=600;對于js和css文件設(shè)置一個較長的緩存時間殿托,如cache-control: max-age=31536000霹菊,js和css文件由文件的md5后綴來決定是否重新加載;圖片文件則可以在鏈接中加上max_age參數(shù)支竹,服務(wù)端會以此返回對應(yīng)Cache-Control響應(yīng)頭

參考博客:
瀏覽器 HTTP 協(xié)議緩存機制詳解
瀏覽器緩存機制

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末旋廷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子礼搁,更是在濱河造成了極大的恐慌饶碘,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件馒吴,死亡現(xiàn)場離奇詭異扎运,居然都是意外死亡,警方通過查閱死者的電腦和手機饮戳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門豪治,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人扯罐,你說我怎么就攤上這事负拟。” “怎么了歹河?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵掩浙,是天一觀的道長。 經(jīng)常有香客問我秸歧,道長涣脚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任寥茫,我火速辦了婚禮遣蚀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘纱耻。我一直安慰自己芭梯,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布弄喘。 她就那樣靜靜地躺著玖喘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蘑志。 梳的紋絲不亂的頭發(fā)上累奈,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天贬派,我揣著相機與錄音,去河邊找鬼澎媒。 笑死搞乏,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的戒努。 我是一名探鬼主播请敦,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼储玫!你這毒婦竟也來了侍筛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤撒穷,失蹤者是張志新(化名)和其女友劉穎匣椰,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體端礼,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡禽笑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了齐媒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡纷跛,死狀恐怖喻括,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贫奠,我是刑警寧澤唬血,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站唤崭,受9級特大地震影響拷恨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谢肾,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一腕侄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧芦疏,春花似錦冕杠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至薪捍,卻和暖如春笼痹,著一層夾襖步出監(jiān)牢的瞬間配喳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工凳干, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留晴裹,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓纺座,卻偏偏與公主長得像息拜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子净响,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354

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