200 ok 几种状态

浏览器加载资源成功一般会有几种状态

200 ok          ----  从原始服务器请求成功

200 ok from cache      ----

200 ok from disk cache  ----

200 ok from memory cache ----

304 not modified          ----  向服务器发送请求,验证新鲜度,足够新鲜,服务器会返回 304状态

 

from cache 表示客户端没有请求服务器, 直接使用浏览器本地缓存

1. 首先from cache  和 not modified的区别

from cache 浏览器没有和服务器确认,直接使用了缓存

not modified 是浏览器和服务器多确认了一次缓存有效性,再用的缓存。

 

那么,两者触发的时机有什么区别呢?200 OK (from cache) 是直接点击链接访问,输入网址按回车访问也能触发;而 304 Not Modified 是刷新页面时触发,或是设置了长缓存、但 Entity Tags 没有移除时触发。

直接访问有缓存的网站都触发 200 OK (from cache), 刷新浏览器则会触发 304 Not Modified,同一域名下,没有 Entity Tag 的资源直接访问,是 200 OK (from cache) 的结果,同一域名下,有 Entity Tag ,直接访问就会触发 304 Not Modified。

 

2. from memory cache 和 from disk cache 的区别

MemoryCache顾名思义,就是将资源缓存到内存中,等待下次访问时不需要重新下载资源,而直接从内存中获取。Webkit早已支持memoryCache。

    目前Webkit资源分成两类,一类是主资源,比如HTML页面,或者下载项,一类是派生资源,比如HTML页面中内嵌的图片或者脚本链接,分别对应代码中两个类:    MainResourceLoader和SubresourceLoader。虽然Webkit支持memoryCache,但是也只是针对派生资源,它对应的类为CachedResource,用于保存原始数据(比如CSS,JS等),以及解码过的图片数据。

 

diskCache顾名思义,就是将资源缓存到磁盘中,等待下次访问时不需要重新下载资源,而直接从磁盘中获取,它的直接操作对象为CurlCacheManager。它与memoryCache最大的区别在于,当退出进程时,内存中的数据会被清空,而磁盘的数据不会,所以,当下次再进入该进程时,该进程仍可以从diskCache中获得数据,而memoryCache则不行。

    diskCache与memoryCache相似之处就是也只能存储一些派生类资源文件。它的存储形式为一个index.dat文件,记录存储数据的url,然后再分别存储该url的response信息和content内容。Response信息最大作用就是用于判断服务器上该url的content内容是否被修改。具体详见:

 

 

 

 

 

 

参考连接:

http://div.io/topic/854

https://segmentfault.com/a/1190000008289847

http://blog.csdn.net/m632587166/article/details/50732205?locationNum=14

http://blog.csdn.net/longxibendi/article/details/41630389

posted @ 2017-02-14 10:50  她在村口等我  阅读(7488)  评论(0编辑  收藏  举报