一、说明
为了节约网络资源提升加载速度,浏览器会根据请求头(Header)的特定字段来判断是否读取本地缓存(磁盘 or 内存)。
二、强缓存
强缓存不会发送网络请求,直接从本地读取资源,依赖于字段 Expires
和 Cache-Control
。
Expires
:资源过期时间,若在这个时间内,则命中强缓存。Cache-Control
:当设置max-age
(单位 s)时,在这个请求的正确返回的若干秒内命中强缓存。
三、协商缓存
协商缓存会发送网络请求,但是会对比头部参数来判断是否命中协商缓存,若命中协商缓存则只返回状态码(304)和请求头来告诉浏览器直接读取本地缓存,依赖于字段 Last-Modifed
/ If-Modified-Since
和 Etag
/ If-None-Match
。
Last-Modified
:本地文件最后修改的时间点,若此时间后服务器资源不存在修改则命中协商缓存。Etag
:Apache 中,ETag
的值,默认是对文件的索引节(INode),大小(Size)和最后修改时间(MTime)进行 Hash 后得到的,若无变化则命中协商缓存。