强缓存和协商缓存

强缓存和协商缓存

  • 共同点
  • 强缓存
  • 协商缓存
  • 概括

共同点

强缓存和协商缓存是 HTTP 缓存机制的两种方式。它们都是为了减少网络请求,提高网页加载速度而出现的。

强缓存

强缓存是利用 HTTP 头中的 Expires 和 Cache-Control 来实现的。Expires 是一个绝对时间,它表示网页过期的时间,当浏览器向服务器请求数据时,服务器会比较当前时间和 Expires 所表示的时间,如果当前时间小于过期时间,说明缓存有效,直接返回浏览器缓存的资源;如果当前时间大于过期时间,缓存已失效,需要再次向服务器发起请求。

Cache-Control 是一个相对时间,在 Expires 之后出现的,它表示网页从请求时间开始多长时间内可以直接从缓存中获取数据。当浏览器向服务器请求数据时,服务器会比较当前时间和 Cache-Control 所表示的时间,如果当前时间在指定时间范围内,说明缓存有效,直接返回浏览器缓存的资源;否则缓存已失效,需要再次向服务器发起请求。

协商缓存

协商缓存是利用 HTTP 头中的 Last-Modified 和 ETag 来实现的。Last-Modified 表示网页最后修改的时间,当浏览器向服务器请求数据时,服务器会比较浏览器发送的 If-Modified-Since 和 Last-Modified 值,如果相同,说明缓存有效,直接返回 304 Not Modified 状态码,让浏览器从缓存中获取数据;如果不同,说明缓存已失效,需要再次向服务器发起请求。

ETag 是一个网页的唯一标识符,当浏览器向服务器请求数据时,服务器会比较浏览器发送的 If-None-Match 和 ETag 值,如果相同,说明缓存有效,直接返回 304 Not Modified 状态码,让浏览器从缓存中获取数据;如果不同,说明缓存已失效,需要再次向服务器发起请求。

概括

总体来说,强缓存优先于协商缓存,如果强缓存存在,浏览器会直接从缓存中获取数据,不会再向服务器发起请求。只有当强缓存失效时,才会使用协商缓存。

你可能感兴趣的:(缓存,服务器,前端)