• web缓存


    web缓存分为服务端缓存 和 客户端缓存。

    服务端缓存:CDN缓存;

    客户端缓存:浏览器缓存。

    浏览器缓存:

    浏览器缓存分为强缓存和协商缓存:

    1、强缓存:浏览器在加载资源时,先根据这个资源的一些http header判断它是否命中强缓存。强缓存如果命中,浏览器直接从子集的缓存中读取资源,不会发送请求到服务器。比如某个css文件,如果浏览器在加载它所在的网页时,这个css文件的缓存配置命中了强缓存,浏览器就直接冲缓存中加载这个css,请求是不会发送到网页所在的服务器。

    2、协商缓存:当强缓存没有命中时,浏览器一定会发送一个请求到服务器,通过服务器端依据资源的另外一些http header验证这个资源是否命中协商缓存,如果命中协商缓存,服务器就会将这个请求返回(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)。
     
    总结:

    强制缓存优先于协商缓存进行,若强制缓存(Expires和Cache-Control)生效则直接使用缓存,若不生效则进行协商缓存(Last-Modified / If-Modified-Since和Etag / If-None-Match),协商缓存由服务器决定是否使用缓存,若协商缓存失效,那么代表该请求的缓存失效,重新获取请求结果,再存入浏览器缓存中;生效则返回304,继续使用缓存,主要过程如下:




    参考:https://blog.csdn.net/free_xiaochen/article/details/78239381

    https://www.jianshu.com/p/256d0873c398

  • 相关阅读:
    要学习TINY框架要有什么前提条件?
    如何获取最新的代码?
    python 反射的用法
    面试题1
    Process多进程的创建方法
    异常捕捉
    用type动态创建Form
    ModelForm的使用
    git 常见命令
    TVTK库的安装
  • 原文地址:https://www.cnblogs.com/liumcb/p/14070009.html
Copyright © 2020-2023  润新知