NO IMAGE

     之前說過形形色色的http code,  今天來看下304.

     我在網上找了一張楊瀾的圖片, 為什麼是她呢? 因為我隨便找的。 

     該圖片的連結地址:http://g.hiphotos.baidu.com/baike/pic/item/29381f30e924b899b743be4f62061d950a7bf64e.jpg

     

     瀏覽器訪問圖片,用fiddler抓包, 發現返回200, 然後f5重新整理, 返回304, 最後ctrl f5強制重新整理,返回200.

     且可以看到, 返回304時, body測長度為0,  為什麼會這樣? 來看看304的作用:

     

304 Not Modified 

Indicates that the resource has not been modified since the version specified by the request headers If-Modified-Since or If-None-Match. In such case, there is no need to retransmit the resource since the client still has a previously-downloaded copy.

簡要分析一下:

第一次訪問時候, 本地沒有圖片的快取, 所以需要完整返回圖片內容, 且有一個時間欄位:Last-Modified: Sun, 01 Apr 2018 01:30:37 GMT

第二次再訪問的時候, 請求中會有:If-Modified-Since: Sun, 01 Apr 2018 01:30:37 GMT , 瀏覽器的請求傳送到伺服器後, 伺服器發現資源並沒有變化, 所以無需重複傳遞圖片內容, 只需給個not modified的狀態碼即可, 也就是304.

第三次訪問, 強制重新整理, 請求中是不會攜帶If-Modified-Since: Sun, 01 Apr 2018 01:30:37 GMT的, 所以服務端認為這是一個新的請求,需要返回圖片的完整內容。

好了, 不多說。