一、说明
为了节约网络资源提升加载速度,浏览器会根据请求头(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 后得到的,若无变化则命中协商缓存。