首页 > 技术文章 > 缓存的理解

honghong87 2018-06-15 09:57 原文

浏览器资源访问过程:

1.当访问静态资源文件时,首先使用url hashcode作为key查询本地资源缓存。

2.如果没找到资源,那么直接访问浏览器,然后将请求的资源文件缓存并载入到html中。

3.如果找到资源,读该资源在服务器创建的的时间,加入http响应头If-Modified-Since: Thu, 30 Oct 2014 22:36:24 GMT,并发送到服务器。

4.服务器根据url进行查找资源,如果未找到,返回404。否则读取资源创建时间,给出响应状态吗。

5.浏览器如果收到404,会清空hascode对应的缓存,资源无法加载到html

6.浏览器如果收到 304,检查Last-Modified:Thu, 30 Oct 2014 22:36:24 GMT,如果(Last-Modified=If-Modified-Since),表示文件未被修改,则直接使用本地缓存加载到html.

7.比较之后,如果服务器>浏览器,则重新请求资源。

8.如果是200,则进行本地缓存更新  Last-Modified>If-Modified-Since,并加载到html。

 

缓存状态:

200 OK (from cache) 是浏览器没有跟服务器确认,直接用了浏览器缓存;

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

 

200(from cache) 是速度最快的,因为不需要访问远程服务器,直接使用本地缓存.304 的过程是, 先请求服务器, 然后服务器告诉我们这个资源没变, 浏览器再使用本地缓存.

推荐阅读