美文网首页
前端缓存的理解 或者 前端数据持久化的理解(强制缓存、协商缓存)

前端缓存的理解 或者 前端数据持久化的理解(强制缓存、协商缓存)

作者: JLong | 来源:发表于2021-02-19 15:47 被阅读0次

    前端缓存分为HTTP缓存和浏览器缓存

    其中HTTP缓存是在HTTP请求传输时用到的缓存,主要在服务器代码上设置;而浏览器缓存则主要由前端开发在前端js上进行设置。

    缓存可以说是性能优化中简单高效的一种优化方式了。一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽,降低网络负荷。

            对于一个数据请求来说,可以分为发起网络请求、后端处理、浏览器响应三个步骤。浏览器缓存可以帮助我们在第一和第三步骤中优化性能。比如说直接使用缓存而不发起请求,或者发起了请求但后端存储的数据和前端一致,那么就没有必要再将数据回传回来,这样就减少了响应数据。

    强制缓存就是向浏览器缓存查找该请求结果,并根据该结果的缓存规则来决定是否使用该缓存结果的过程,强制缓存的情况主要有三种,如下:

    ①不存在该缓存结果和缓存标识,强制缓存失效,则直接向服务器发起请求

    ②存在该缓存结果和缓存标识,但该结果已失效,强制缓存失效,则使用协商缓存

    ③存在该缓存结果和缓存标识,且该结果尚未失效,强制缓存生效,直接返回该结果

    控制强制缓存的字段分别是Expires和Cache-Control,其中Cache-Control优先级比Expires高。

    Cache-Control、Expires都是缓存到期时间,Cache-Control是相对值,Expires是绝对值,即再次发送请求时,如果时间没到期,强制缓存生效。

    注:在无法确定客户端的时间是否与服务端的时间同步的情况下,Cache-Control相比于expires是更好的选择,所以同时存在时,只有Cache-Control生效。

     
    协商缓存就是强制缓存失效后,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程

    ①协商缓存生效,返回304

    ②协商缓存失效,返回200和请求结果

    浏览器的缓存存放在哪里,如何在浏览器中判断强制缓存是否生效?

    这里我们以博客的请求为例,状态码为灰色的请求则代表使用了强制缓存,请求对应的Size值则代表该缓存存放的位置,分别为from memory cache 和 from disk cache。那么from memory cache 和 from disk cache又分别代表的是什么呢?什么时候会使用from disk cache,什么时候会使用from memory cache呢?

    from memory cache代表使用内存中的缓存,from disk cache则代表使用的是硬盘中的缓存

    浏览器读取缓存的顺序为memory –> disk –> 服务器请求。

    内存缓存(from memory cache):内存缓存具有两个特点,分别是速度快和时间限制

    硬盘缓存(from disk cache):硬盘缓存则是直接将缓存写入硬盘文件中,读取缓存需要对该缓存存放的硬盘文件进行I/O操作,然后重新解析该缓存内容,读取复杂速度比内存缓存慢

    在浏览器中,浏览器会在js和图片等文件解析执行后直接存入内存缓存中,那么当刷新页面时只需直接从内存缓存中读取(from memory cache);而css文件则会存入硬盘文件中,所以每次渲染页面都需要从硬盘读取缓存(from disk cache)。

    相关文章

      网友评论

          本文标题:前端缓存的理解 或者 前端数据持久化的理解(强制缓存、协商缓存)

          本文链接:https://www.haomeiwen.com/subject/xzqaxltx.html