HTTP 304狀態分析
來源:易賢網 閱讀:921 次 日期:2014-07-11 08:24:36
溫馨提示:易賢網小編為您整理了“HTTP 304狀態分析”,方便廣大網友查閱!

HTTP 304: Not Modified

標準解釋是:Not Modified 客戶端有緩沖的文檔并發出了一個條件性的請求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。服務器告訴客戶,原來緩沖的文檔還可以繼續使用。

我們先來看下瀏覽器的工作原理:

(1)直接在緩存中去獲取內容。如果先前有效訪問的響應頭包含 Expires, max-age的話,“打開新窗口”、“輸入URI回車”、“前一頁”、“后一頁”這些瀏覽器行為不會使瀏覽器在Expires, max-age設置的有效期時間內去訪問服務器,而是在緩存中去獲取內容,但是"刷新'"或"重載"例外。

(2)訪問服務器,根據服務器響應來獲取內容。這種情況發生在設置no-cache等頭標要求不緩存,或者是設置了 Expires,max-age但瀏覽器行為是“刷新”或“重載”時候。'Last-Modified'、'ETag'、'must-revalidate' 等有些特殊,不直接受瀏覽器行為影響,它們必須訪問服務器后,再由服務器判斷是直接發送新的資源,還是發送一個304 Not Modfied讓瀏覽器使用緩存中的資源。

如果客戶端在請求一個文件的時候,發現自己緩存的文件有 Last Modified ,那么在請求中會包含 If Modified Since ,這個時間就是緩存文件的 Last Modified 。因此,如果請求中包含 If Modified Since,就說明已經有緩存在客戶端。只要判斷這個時間和當前請求的文件的修改時間就可以確定是返回 304 還是 200 。對于靜態文件,例如:CSS、圖片,服務器會自動完成 Last Modified 和 If Modified Since 的比較,完成緩存或者更新。但是對于動態頁面,就是動態產生的頁面,往往沒有包含 Last Modified 信息,這樣瀏覽器、網關等都不會做緩存,也就是在每次請求的時候都完成一個 200 的請求。

因此,對于動態頁面做緩存加速,首先要在 Response 的 HTTP Header 中增加 Last Modified 定義,其次根據 Request 中的 If Modified Since 和被請求內容的更新時間來返回 200 或者 304 。雖然在返回 304 的時候已經做了一次數據庫查詢,但是可以避免接下來更多的數據庫查詢,并且沒有返回頁面內容而只是一個 HTTP Header,從而大大的降低帶寬的消耗,對于用戶的感覺也是提高。

如何測試HTTP狀態,緩存是否有效?

可以使用HttpWatch

第一次訪問 200

鼠標點擊二次訪問 (Cache)

按F5刷新 304

按Ctrl+F5強制刷新 200

如果是這樣的就說明緩存真正有效了。

對 HTTP 304 的理解

最近和同事一起看Web的Cache問題,又進一步理解了 HTTP 中的 304 又有了一些了解。

304 的標準解釋是:Not Modified 客戶端有緩沖的文檔并發出了一個條件性的請求(一般是提供If-Modified-Since頭表示客戶只想比指定日期更新的文檔)。服務器告訴客戶,原來緩沖的文檔還可以繼續使用。

如 果客戶端在請求一個文件的時候,發現自己緩存的文件有 Last Modified ,那么在請求中會包含 If Modified Since ,這個時間就是緩存文件的 Last Modified 。因此,如果請求中包含 If Modified Since,就說明已經有緩存在客戶端。只要判斷這個時間和當前請求的文件的修改時間就可以確定是返回 304 還是 200 。對于靜態文件,例如:CSS、圖片,服務器會自動完成 Last Modified 和 If Modified Since 的比較,完成緩存或者更新。但是對于動態頁面,就是動態產生的頁面,往往沒有包含 Last Modified 信息,這樣瀏覽器、網關等都不會做緩存,也就是在每次請求的時候都完成一個 200 的請求。

因此,對于動態頁面做緩存加速,首先要在 Response 的 HTTP Header 中增加 Last Modified 定義,其次根據 Request 中的 If Modified Since 和被請求內容的更新時間來返回 200 或者 304 。雖然在返回 304 的時候已經做了一次數據庫查詢,但是可以避免接下來更多的數據庫查詢,并且沒有返回頁面內容而只是一個 HTTP Header,從而大大的降低帶寬的消耗,對于用戶的感覺也是提高。

當這些緩存有效的時候,通過 HttpWatch 查看一個請求會得到這樣的結果:

第一次訪問 200

鼠標點擊二次訪問 (Cache)

按F5刷新 304

按Ctrl+F5強制刷新 200

如果是這樣的就說明緩存真正有效了。以上就是我對 HTTP 304 的一個理解。

更多信息請查看IT技術專欄

更多信息請查看網站運營
易賢網手機網站地址:HTTP 304狀態分析
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!
相關閱讀網站運營

2026國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
未满十八18勿进黄网站免费看