失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 200 OK(from memory cache)和 200 OK(from disk cache)

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

时间:2018-11-26 10:13:16

相关推荐

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

200 OK(from memory cache)内存缓存

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

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

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

特点

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

200 OK(from disk cache)硬盘缓存

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

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

原理

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

容量

硬盘缓存容量大

304 Not Modified

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

几种状态对比

样式表一般在磁盘中,不会缓存到内存中去,因为CSS样式加载一次即可渲染出网页。但是,脚本却可能随时会执行,如果脚本在磁盘当中,在执行该脚本需要从磁盘中取到内存当中来。这样IO开销比较大,有可能会导致浏览器失去响应。因此,脚本一般在内存中。

对于大文件来说,大概率是不存储在内存中的,反之优先。当前系统内存使用率高的话,文件优先存储进硬盘。

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

三级缓存原理

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

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

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

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

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

示例:

加载一个图片资源顺序:

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

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

禁止200缓存方法

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

如果觉得《200 OK(from memory cache)和 200 OK(from disk cache)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。