聯系方式
更多

奇蟻客服: 点击这里给我发消息

工作时间:

周一 至 周日 : 8:00-18:00

联系方式:

夏經理:18605387375

详细内容

HTTP 304狀態分析技術好貼!分享給大家!

时间:2016-12-21     作者:泰安奇蟻科技【原创】   阅读

來源泰安網站建設泰安網站設計泰安營銷型網站制泰安企業網站制作泰安購物商城制作泰安手機網站制作泰安網站優化推廣泰安手機app開發泰安微信公眾號開發泰安泰安微信營銷推廣泰安奇蟻科技www.3458847.live   電話18605387375

 

今天泰安奇蟻科技在查看web服務器日志的時候看到有很多304http狀態,為什么會返回304而不是200呢?這與服務器的緩存設置非常有關,所以分享來給大家!

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 的理解

最近泰安網站建設和同事一起看WebCache問題,又進一步理解了 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 的一個理解。

文章來自泰安網站建設泰安網站設計泰安營銷型網站制泰安企業網站制作泰安購物商城制作泰安手機網站制作泰安網站優化推廣泰安手機app開發泰安微信公眾號開發泰安泰安微信營銷推廣泰安奇蟻科技www.3458847.live   電話18605387375

 


客服中心
联系方式
18605387375
4008-538-676
- 售前客服
- 售后客服
掃一掃 關注我們
新疆18选7开奖规则图片 平特一肖方法 足球比分赔率 广东36选7开奖结果 网上棋牌大厅 利用互联网怎么赚钱 街机千炮捕鱼网络版 哈哈湖南麻将官网 网上真人打麻将游戏 宝马论坛平码论坛高手 查浙江20选5 澳门新永利棋牌网址? 捕鱼少女游戏 腾讯分分彩0369规律计划方法 南粤风采26选5好彩3 赛车风云之急速赛车 心悦麻将苹果下载