用户发送请求,浏览器会在本地查找有没有缓存,如果已存在缓存,还需要判断缓存是否失效,缓存没有失效就继续用,缓存失效了就要进一步判断
缓存分为协商缓存,强缓存
协商缓存:
通过 Etag 或者 Last-Modified 进行判断
Etag:标记号
Last-Modified:时间戳,所以如果改本地时间的话会有影响
如果一个资源既有 Etag 也有 Last-Modified,优先级是 Etag > Last-Modified
判断缓存是否失效需要在发送请求的时候,请求头加上 If-None-Match,值是缓存资源的 Etag 或者加上 Last-Modified,服务器会判段缓存是否失效,如果已失效服务器就返回 200 和新的资源,如果没有失效就返回 304,浏览器会根据服务器返回的数据进行处理(缓存协商)

网友评论