HTTP 304錯誤的詳細講解
Not Modified 客戶端有緩沖的文檔并發(fā)出了一個條件性的請求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。服務(wù)器告訴客戶,原來緩沖的文檔還可以繼續(xù)使用。
如果客戶端在請求一個文件的時候,發(fā)現(xiàn)自己緩存的文件有 Last Modified ,那么在請求中會包含 If Modified Since ,這個時間就是緩存文件的 Last Modified 。因此,如果請求中包含 If Modified Since,就說明已經(jīng)有緩存在客戶端。只要判斷這個時間和當前請求的文件的修改時間就可以確定是返回 304 還是 200 。對于靜態(tài)文件,例如:CSS、圖片,服務(wù)器會自動完成 Last Modified 和 If Modified Since 的比較,完成緩存或者更新。但是對于動態(tài)頁面,就是動態(tài)產(chǎn)生的頁面,往往沒有包含 Last Modified 信息,這樣瀏覽器、網(wǎng)關(guān)等都不會做緩存,也就是在每次請求的時候都完成一個 200 的請求。
因此,對于動態(tài)頁面做緩存加速,首先要在 Response 的 HTTP Header 中增加 Last Modified 定義,其次根據(jù) Request 中的 If Modified Since 和被請求內(nèi)容的更新時間來返回 200 或者 304 。雖然在返回 304 的時候已經(jīng)做了一次數(shù)據(jù)庫查詢,但是可以避免接下來更多的數(shù)據(jù)庫查詢,并且沒有返回頁面內(nèi)容而只是一個 HTTP Header,從而大大的降低帶寬的消耗,對于用戶的感覺也是提高。
當這些緩存有效的時候,通過 HttpWatch 查看一個請求會得到這樣的結(jié)果:
第一次訪問 200
鼠標點擊二次訪問 (Cache)
按F5刷新 304
按Ctrl+F5強制刷新 200
如果是這樣的就說明緩存真正有效了。以上就是我對 HTTP 304 的一個理解。
相關(guān)文章
淺談JavaScript數(shù)據(jù)類型及轉(zhuǎn)換
本文向大家簡單介紹了javascript的數(shù)據(jù)類型以及他們直接的轉(zhuǎn)換方法,雖然沒有太多示例,但是也是個人的一些經(jīng)驗總結(jié),這里推薦給大家。2015-02-02
關(guān)于javascript中的typeof和instanceof介紹
typeof用來檢測給定變量的數(shù)據(jù)類型 instanceof用來檢測對象的類型2012-12-12
JS?數(shù)組sort方法的升序為什么是a-b你知道嗎
這篇文章主要為大家詳細介紹了JS?數(shù)組sort方法為什么升序是a-b,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-02-02
Javascript & DHTML 實例編程(教程)基礎(chǔ)知識
Javascript & DHTML 實例編程(教程)基礎(chǔ)知識...2007-06-06
一篇文章告訴你JavaScript的作用域和函數(shù)該這樣理解
這篇文章主要為大家詳細介紹了JavaScript的作用域和函數(shù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-02-02
JavaScript 學習筆記 Black.Caffeine 09.11.28
這兩天終于寫出了一個個人認為真正意義上的作業(yè)了,不過,最大感受就是。。。IE太垃圾了。。。so,這個作業(yè)實際上也沒有完成的很完美,因為,在IE上還是有兼容性的問題存在,不錯,就此先自我總結(jié)一下吧~免得以后又忘了~2009-11-11
js中top/parent/frame概述及案例應(yīng)用
top:永遠指分割窗口最高層次的瀏覽器窗口;parent:包含當前分割窗口的父窗口,本文將圍繞js中top、parent、frame進行講述及他們的應(yīng)用案例2013-02-02
javascript Window及document對象詳細整理
注:頁面上元素name屬性以及JavaScript引用的名稱必須一致包括大小寫否則會提示你1個錯誤信息 引用的元素為空或者不是對象2011-01-01

