强缓存与协商缓存的实现机制

缓存策略是网络数据传输中的一项重要技术,它可以极大地提高数据访问速度,减少服务器负载。缓存策略主要分为两种:强缓存和协商缓存。这两种缓存策略的实现机制如下所述

缓存策略是网络数据传输中的一项重要技术,它可以极大地提高数据访问速度,减少服务器负载。缓存策略主要分为两种:强缓存和协商缓存。这两种缓存策略的实现机制如下所述。

强缓存的实现

强缓存是根据返回头中的Expires或者Cache-Control两个字段来控制的。具体流程如下:

强缓存与协商缓存的实现机制

  1. 首次请求与缓存设置
    当浏览器第一次请求远程服务器的某个资源时,如果服务器希望浏览器得到该资源后一段时间内不要再发送请求过来,可以在响应头里设置Cache-Control:max-age属性。max-age代表缓存时间,单位为毫秒。例如,如果设置为max-age=31536000(即一年),意味着在一年内浏览器不会再向服务器发送请求。

  2. 缓存判断与资源读取
    浏览器在加载资源时,会检查缓存时间是否过期。如果没有过期,则直接从缓存中读取资源,不会发请求到服务器。强缓存返回的状态码通常是200,并在响应头中包含From Cache的标志。

  3. 缓存失效与重新请求
    如果缓存时间过期或者不存在,则浏览器会向服务器发送请求参数,如设置过期时间的Expires字段或Cache-Control指令。如果服务器返回的状态码是200,则浏览器会将资源从服务器上下载下来,并把响应头及该请求时间一起缓存。

协商缓存的实现

协商缓存是由服务器来确定缓存资源是否可用。具体流程如下:

强缓存与协商缓存的实现机制

  1. 首次请求与资源验证
    浏览器第一次请求资源时,服务器会在返回的header中加上Last-Modified,这是一个时间标识该资源最后一次修改时间(单位为s)。当浏览器再次请求该资源时,会将服务器返回的Last-Modified的值以If-Modified-Since字段上送,询问服务器在该日期后资源是否有更新。

    强缓存与协商缓存的实现机制

  2. 协商缓存判断
    服务器收到请求后,会优先根据ETag值判断请求的文件有没有做修改。如果一致则命中缓存,返回304状态码,并带上新的response header通知浏览器从缓存中读取资源。

  3. 资源变更与更新
    如果服务器收到的请求没有命中强缓存,就会发一个请求到服务器验证协商缓存是否命中。如果协商缓存命中,则返回304状态码,并显示一个”Not Modified”的字符串。如果内容发生改变,服务器会返回新的资源文件并带上新的ETag并返回200状态码。

综上所述,强缓存和协商缓存都是通过设置HTTP头部来实现的,但它们的工作方式和决策逻辑有所不同。强缓 cache 是由浏览器自主判断是否使用缓存,而协商缓存是由服务器来决定是否使用缓存。了解这些机制对于优化网络性能和减少服务器负载至关重要。

原创文章,作者:Ur47000,如若转载,请注明出处:https://wyc.retuba.cn/20405.html

(0)
Ur47000Ur47000
上一篇 2024年6月10日
下一篇 2024年6月10日

相关推荐