强缓存和协商缓存

一、说明

为了节约网络资源提升加载速度,浏览器会根据请求头(Header)的特定字段来判断是否读取本地缓存(磁盘 or 内存)。

二、强缓存

强缓存不会发送网络请求,直接从本地读取资源,依赖于字段 ExpiresCache-Control

  • Expires:资源过期时间,若在这个时间内,则命中强缓存。
  • Cache-Control:当设置 max-age (单位 s)时,在这个请求的正确返回的若干秒内命中强缓存。

三、协商缓存

协商缓存会发送网络请求,但是会对比头部参数来判断是否命中协商缓存,若命中协商缓存则只返回状态码(304)和请求头来告诉浏览器直接读取本地缓存,依赖于字段 Last-Modifed / If-Modified-SinceEtag / If-None-Match

  • Last-Modified:本地文件最后修改的时间点,若此时间后服务器资源不存在修改则命中协商缓存。
  • Etag:Apache 中,ETag 的值,默认是对文件的索引节(INode),大小(Size)和最后修改时间(MTime)进行 Hash 后得到的,若无变化则命中协商缓存。

四、参考

发表评论

您的电子邮箱地址不会被公开。