本文对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
关于更多浏览器缓存可参考 浏览器缓存和数据压缩