【浏览器缓存机制】

浏览器缓存机制

  • 浏览器缓存机制
    • 1. 强缓存
    • 2. 协商缓存
  • 协商缓存和强缓存区别

浏览器缓存机制

浏览器缓存机制是指浏览器在访问网站时,会将一些资源文件(如文档、样式、脚本、图片等)缓存到本地,以提高页面加载速度和减轻服务器压力的一种技术。

常见的浏览器缓存机制有两种:强缓存和协商缓存。

1. 强缓存

强缓存是指在缓存有效期内,浏览器再次请求相同的资源时,直接从本地缓存中读取,不需要向服务器发送请求。其中,缓存有效期可以通过HTTP响应头来设置,常见的响应头有:

  • Expires:表示资源的过期时间,即Date+max-age,它是HTTP1.0规定的响应头。
  • Cache-Control:表示资源的缓存控制,可以设置的值有private、no-cache、no-store、max-age等等,它是HTTP1.1规定的响应头。

2. 协商缓存

协商缓存是指在缓存过期后,浏览器再次请求相同的资源时,会向服务器发送请求,并获取该资源的最新修改时间或唯一标识。如果资源有更新,服务器会返回304状态码,告诉浏览器直接读取本地缓存;如果资源没有更新,则服务器返回200状态码,告诉浏览器重新下载该资源。协商缓存的实现需要用到HTTP请求头和响应头:

  • If-Modified-Since:表示上次修改时间,它是HTTP1.0规定的请求头。
  • If-None-Match:表示唯一标识,它是HTTP1.1规定的请求头。
  • Last-Modified:表示最后一次修改时间,它是HTTP1.0规定的响应头。
  • ETag:表示唯一标识,它是HTTP1.1规定的响应头。

总的来说,浏览器缓存机制可以有效缩短页面加载时间和减少网络流量,同时也需要开发者合理设置缓存时间和处理缓存更新的问题。

协商缓存和强缓存区别

协商缓存和强缓存都是浏览器缓存机制的一部分,但它们的实现方式和缓存过程有所不同。

强缓存是通过Cache-ControlExpires这两个http响应头来实现的。服务器通过在响应头中设置Cache-ControlExpires字段告诉浏览器缓存时间。在缓存期内,浏览器再次访问相同的资源时会检查缓存是否有效,如果有效则直接使用缓存中的资源。因为缓存时间是由服务器来控制的,所以这种缓存策略不需要向服务器发送任何请求。

而协商缓存则是通过Last-ModifiedETag这两个http响应头来实现的。当浏览器对某个资源进行请求时,服务器会返回一个带有Last-ModifiedETag字段的响应。浏览器在再次请求该资源时会带上一个带有If-Modified-SinceIf-None-Match字段的请求头,服务器会对这个请求头进行判断,判断资源是否发生了变化,如果没有变化则返回304 Not Modified,浏览器就会使用缓存中的资源。

总的来说,强缓存是直接使用浏览器本地缓存,不需要与服务器进行通信,而协商缓存需要先与服务器进行一次通信,判断资源是否发生了变化,再决定是否使用本地缓存。强缓存性能更高,协商缓存更精确。

你可能感兴趣的:(面试常问问题,缓存)