zoukankan      html  css  js  c++  java
  • 对于前端缓存的理解(缓存机制和缓存类型)

    前端缓存,主要分为两种,HTTP缓存和浏览器缓存。

    HTTP缓存,主要存在于服务器请求传输时需要记录的一些参数,在服务器代码上设置。

    浏览器缓存,主要是由前端JS代码主动存储的某些参数。

    缓存是前端项目性能优化中简单高效的一种方式。优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽,降低网络负荷。例如:前端需要发起一个数据请求,可以分为发起网络请求、后端处理、浏览器响应三个步骤。浏览器缓存可以帮助我们在第一和第三步骤中优化性能。比如说直接使用缓存而不发起请求,或者发起了请求但后端存储的数据和前端一致,那么就没有必要再将数据回传回来,这样就减少了响应数据。

    浏览器与服务器通信的方式为应答模式,即是:浏览器发起HTTP请求 – 服务器响应该请求。那么浏览器第一次向服务器发起该请求后拿到请求结果,会根据响应报文中HTTP头的缓存标识,决定是否缓存结果,是则将请求结果和缓存标识存入浏览器缓存中。

    缓存流程两点总结:
    1、浏览器每次发起请求,都会在浏览器缓存里寻找该请求的标识和缓存内容。
    2、浏览器每次收到返回结果,都会在浏览器缓存里保存该标识和缓存内容。
     
    什么叫强制缓存?
       强制缓存就是,强制从浏览器缓存中查找该次请求的标识和内容,然后根据该结果的缓存规则,来决定是否使用浏览器缓存。
    (1)没有该请求的缓存和标识,强制缓存失效,向服务器发送新请求。
    (2)存在该请求的缓存和标识,但是结果已过期,强制缓存失效,改为协商缓存。
    (3)存在该请求的缓存和标识,未过期,使用该缓存资源,返回结果。
    什么叫协商缓存?
       协商缓存就是强制缓存失效后,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程。此时的请求头里会有Etag参数,如果请求的Etag参数和服务器上的Etag参数相同,那说明服务器的资源没有更新,则协商缓存生效,继续使用浏览器的缓存资源,如果请求的Etag参数和服务器的Etag参数不同,那说明服务器的资源有更新,则协商缓存不生效,由服务器重新打包最新资源响应返回给浏览器。
     
    强制缓存和协商缓存的优先级?
    强制缓存优先于协商缓存。
     
  • 相关阅读:
    python笔记——调试和异常处理
    [算法学习] 线段树,树状数组,数堆,笛卡尔树
    【cpp】G++中不支持static_cast?
    【生活感想】不够淡定
    数值线性代数小结
    伪逆
    统计机器学习
    Numerical Methods with MATLAB(1)
    吐槽iOS国际化:关于NSLocalizedString的使用
    iOS 沙盒路径操作:新建/删除文件和文件夹
  • 原文地址:https://www.cnblogs.com/panic404/p/13025768.html
Copyright © 2011-2022 走看看