浏览器缓存分为协商缓存和强缓存。浏览器在请求时,如果缓存中存在这个资源,并且这个资源以及缓存标识没有失效,那么直接命中强缓存,浏览器直接返回结果。如果缓存中不存这个资源或者缓存标识已失效,那么就会命中协商缓存。
命中协商缓存后,浏览器会带着缓存标识去请求服务器,服务器去判断这个缓存是否可以用,如果可以返回304,否则就是返回200,以及数据。
控制资源是否过期的是cache-control以及expires,cache-control的优先级高于expires。
控制协商缓存的字段分别有:
Last-Modified / If-Modified-Since和Etag / If-None-Match,其中Etag / If-None-Match的优先级比Last-Modified / If-Modified-Since高。
Last-Modified:服务器响应时响应头的字段,意思是资源最后被修改的时间,在浏览器再次请求时,这个时间会放进If-Modified-Since字段中,带到服务器
Etag:服务器响应时,返回的标识。浏览器再次请求时,这个值会放进 If-None-Match字段中。
网友评论