本文對http code 返回304場景流程記錄
304 Not Modified: 協商緩存,請求頭中發送一定的校驗數據到服務器,如果服務器數據沒有改變瀏覽器從本地緩存響應,返回304。
瀏覽器端發送請求,打開網頁 http://blog.lilaiqun.com/15700882317067.html
Request URL: http://blog.lilaiqun.com/15700882317067.html
Request Method: GET
Status Code: 304 Not Modified
Remote Address: 111.231.119.151:80
Referrer Policy: no-referrer-when-downgrade
請求頭
// 通知瀏覽器資源的最後修改時間
If-Modified-Since: Sat, 12 Oct 2019 04:24:30 GMT
// 本地緩存失效,會攜帶去請求服務端,服務端判斷資源是否改變,沒有則直接使用本地緩存,返回304
If-None-Match: W/"5da1557e-315f"
服務端access.log, 可以看到接收到了請求,但是立刻返回了304
180.*.*.* - - [12/Oct/2019:13:12:06 +0800] "GET /15700882317067.html HTTP/1.1" 304 0 "http://blog.lilaiqun.com/"
返回頭信息
// 文件的指紋標識符,如果文件內容修改,指紋會改
ETag: "5da1557e-315f"
Last-Modified: Sat, 12 Oct 2019 04:24:30 GMT
返回頭信息中ETag和發送的時候是一致的,所以服務器確定此資源沒有過期,返回了304
關於更多瀏覽器緩存可參考 瀏覽器緩存和數據壓縮