浏览器 强缓存 协商缓存

184 阅读1分钟

http缓存:强缓存协商缓存

强缓存(无HTTP请求,无需协商)

  • 定义

    • 直接读取本地缓存,无需跟服务端发送请求确认

    • http返回状态码是200

      • from memory cache或者from disk cache

      • 不同浏览器返回的信息不一致的

  • 对应的Http header有

    • Cache-Control

    • Expires

协商缓存(有HTTP请求,需协商)

  • 浏览器发现本地有该资源的缓存

  • 向服务器询问是否是最新的

  • 缓存版本可用:返回304(Not Modified) http状态码

  • 对应的Http header有:

    • Last-Modified(缺点只能精确到1s)

    • ETag

Http Header描述
Cache-Control指定缓存机制,优先级最高
Pragmahttp1.0字段,已废弃,为了兼容一般使用no-cache
Expireshttp1.0字段,指定缓存的过期时间
Last-Modifiedhttp1.0字段,资源最后一次的修改时间
ETag唯一标识请求资源的字符串,会覆盖Last-Modified

浏览器缓存

  • 把页面信息保存到用户本地电脑硬盘里

原理

第一次请求

  • 浏览器通过http的header报头

    • 附带Expires,Cache-Control,Last-Modified/Etag向服务器请求
  • 服务器记录第一次请求的Last-Modified/Etag

再次请求

  • 请求头附带Expires,Cache-Control,If-Modified-Since/Etag向服务器请求

  • 服务器根据第一次记录的Last-Modified/Etag和再次请求的If-Modified-Since/Etag做对比,判断是否需要更新

    • 未发生变化,客户端不需要重新下载,返回304响应