浏览器中的常用的缓存类型都有哪些

缓存协议在软件编程开发中是非常重要的一个组成内容,而今天我们就通过案例分析来了解一下,浏览器中的常用的缓存类型都有哪些。

浏览器中的常用的缓存类型都有哪些

一、缓存分类

浏览器一次请求资源时,必须请求所有的资源,然后根据响应的header内容来决定,如何缓存资源。一般而言缓存可以分为强缓存和协商缓存两种。

1、强缓存

当客户端缓存所要请求的数据时。客户端直接从缓存数据获取数据。当客户端没有缓存所请求的数据时,客户端的才会从服务端获取数据。

2、协商缓存

又称对比缓存,客户端会先从缓存数据中获取到一个缓存数据的标识,得到标识后请求服务端验证是否失效(新鲜),如果没有失效服务端会返回304,此时客户端直接从缓存中获取所请求的数据,如果标识失效,服务端会返回更新后的数据。

二、资源验证

验证是否能使用缓存(协商缓存策略)主要有两种方式:

1、Last-Modified:后一次修改时间

配合If-Modified-Since和If-UnModified-Since使用

对比上次修改时间以验证资源是否需要重新修改

2、Etag:数据签名

配合If-Match或者If-Non-Match使用

对比资源的签名判断是否使用缓存

而这里Etag主要为了解决Last-Modified无法解决的一些问题:

1、一些文件也许会周期性的更改,但是他的内容并不改变(仅仅改变的修改时间),这个时候我们并不希望客户端认为这个文件被修改了,而重新GET;

2、某些文件修改非常频繁,比如在秒以下的时间内进行修改,(比方说1s内修改了N次),If-Modi富源工贸有限公司fied-Since能检查到的粒度是s级的,这种修改无法判断(或者说UNIX记录MTIME只能精确到秒);

3、某些服务器不能精确的得到文件的后修改时间。

三、缓存状态码

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

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

304NotModified比200OK(fromcache)慢,指的是浏览器还向服务器确认了下If-Not-Modified,才用的缓存。

浏览器中的操作对缓存的影响:

强制刷新–当按下ctrl+F5来刷新页面的时候,浏览器将绕过各种缓存(本地缓存和协商缓存),直接让服务器返回新的资源;

普通刷新–当按下F5来刷新页面的时候,浏览器将绕过本地缓蹲来发送请求到服务器,此时,协商缓存是有效的

回车或转向–当在地址栏上输入回车或者按下跳转按钮的时候,所有缓存都生效

【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!