0
点赞
收藏
分享

微信扫一扫

200 OK(from memory cache)和 200 OK(from disk cache)

中间件小哥 2022-02-15 阅读 60

在这里插入图片描述

200 OK(from memory cache)内存缓存

不访问服务器,直接从内存中读取缓存。

此时获取的数据是缓存到内存中的,当kill进程后(浏览器关闭),数据将不存在(资源被释放掉了)。

如果再次打开页面时,不会出现200 OK(from memory cache)。

特点

  1. 内存缓存容量小
  2. 快速读取:内存缓存会将编译解析后的文件,直接存入该进程的内存中,占据该进程一定的内存资源,以方便下次运行使用时的快速读取
  3. 时效性:缓存时效性很短,会随着进程的释放而释放

200 OK(from disk cache)硬盘缓存

不访问服务器,直接从磁盘中读取缓存,当kill进程后(关闭浏览器),数据还存在。

下次打开页面还是from disk cache。

原理

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

容量

硬盘缓存容量大

304 Not Modified

访问服务器,发现数据没有更新,服务器返回此状态码。然后,从缓存中读取数据。

几种状态对比

状态类型说明
200form memory cache不请求网络资源,资源在内存当中,一般脚本、字体、图片会存在内存当中
200form disk ceche不请求网络资源,在磁盘当中,一般非脚本会存在磁盘当中,如css等
200资源大小数值从服务器下载最新资源
304报文大小请求服务端发现资源没更新,使用本地资源

三级缓存原理

  1. 先查找内存,如果有,直接从内存中加载

  2. 如果内存没有,则去硬盘获取,如果有直接加载

  3. 如果硬盘也没有,那么就进行网络请求

  4. 加载到的资源缓存到硬盘和内存

浏览器运行时是由几个进程协作的,所以操作系统为了节省内存,会把一部分内存里的资源交换回磁盘的交换区,当然交换是有策略的,比如最常用的就是LRU。所以缓存资源不过期的时候,如果资源在内存那么就from memory,如果只有在磁盘上就from disk。

示例:

加载一个图片资源顺序:

访问 -> 200 -> 退出浏览器

再次进入-> 200(from disk cache) -> 刷新 -> 200(from memory cache)

禁止200缓存方法

禁止200 OK (from disk cache) 这个缓存的方法是,ajax 请求是带上参数 cache: false。

举报

相关推荐

0 条评论