谈谈浏览器的缓存过期时间

标签: 浏览器 缓存 时间 | 发表时间:2016-03-08 15:40 | 作者:bijian1013
出处:http://www.iteye.com

一.浏览器为什么要缓存?什么会缓存下来? 

        首先当我们访问网页的时候,很多大的图片从服务器上传输过来的时候,试想一下,如果浏览器不把图片缓存下来而是每次都要到服务器去取,那么每次都给服务器和网络造成了巨大的负担。

        对于静态资源来说,浏览器不会缓存html页面的,所以你每次改完html的页面的时候,html都是改完立即生效的,不存在什么有缓存导致页面不对的问题。浏览器缓存的东西有图片,css和js。这些资源将在缓存失效前调用的时候调用浏览器的缓存内容。

 

二.怎么让浏览器的缓存的东西不失效?

        文档里有种说法是吧header中的Expires:设置为Sun, 17-Jan-2038 19:14:07 GMT,因为这个时间是32位unix支持的最大的时间值。

        但是网上有种说法就是IIS6 最大的时间只能到31-Dec-2035

If you’re using IIS6 you’ll find that the UI won’t allow anything beyond 31-Dec-2035.

        总之我们把这个时间设置到很大就可以了。下面是访问google时一个response返回的值。

        补充一下,如果expires的时间为-1,那么缓存会立即失效。如果是一个将来时间,那么它将在将来时间失效。

 

三.怎么让浏览器不缓存静态资源?

        一种方式就是让你的页面有这样的header,Cache-Control: no-cache header,这样浏览器就不会缓存静态资源了,每次取数据的时候都去服务器上重新获取。

        补充一下,如果设置no-cache的时候对IE是有效的,但是对于firefox是不行的,如果让firefox也不缓存要在header中加一个Cache-Control: no-cache, no-store

        另外一种方式就是让你的静态资后缀加上一个版本号,比如

<link rel="stylesheet" type="text/css" href="../css/icon.css?version=3.1.32(2013-05-31)"/>

        如果这个version有改变的话,下次就会重新获取这个静态资源。这样做的好处就是由你来控制什么时候来获取新的版本的静态资源。 

 

四.如果不设置这些浏览器用什么来控制缓存失效?

        header中有一个参数叫Last-Modified ,这个是由服务器自动加上的,如果有这个参数,那么浏览器每次都会重新计算本地的cache。如果浏览器返回一个304的编码就表示资源没有改变,那么浏览器就可以使用本地的cache。

        就如参考文档中说的,对于IE来说,如果没有设置expirse header的时候,IE的缓存时间就是一个session的时间,如果用户打开一个新的IE窗口的时候,他们就会获取最新的静态资源。但是对于firefox来说它就不是这样了,它是依赖last—modified的时间的(HTTP 1.1 spec RFC2616)。

Also, if the response does have a Last-Modified time, the heuristic expiration value SHOULD be no more than some fraction of the interval since that time. A typical setting of this fraction might be 10%.

        也就是说firefox的失效时间=现在时间+0.1*(time-last-modified ),就是他将在它上一次修改时间的十分之一的时间差的时候失效。

        为什么这么做呢?我们可以想象一个文件越久没有修改,那么它就越稳定,所以缓存的时间也就越长。只是这个时间差要除以10。

        比如一个文件上次修改时间为100天之前,那么那10天后才会失效。  

       

        总结一下,以前对浏览器的缓存及失效了解的不是很透彻,具体是如何失效的也不太清楚,那么现在对于如何能改变缓存,永久缓存及合适能失效都有了比较详细的了解。另外要注意的就是IE和firefox的机制还是有很大区别的。

        进一步参考文档:

http://blog.httpwatch.com/2007/12/10/two-simple-rules-for-http-caching/

http://blog.httpwatch.com/2008/10/15/two-important-differences-between-firefox-and-ie-caching/

 

文章来源: http://my.oschina.net/zimingforever/blog/134914?fromerr=5ygd55ZT



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [浏览器 缓存 时间] 推荐:

谈谈浏览器的缓存过期时间

- - Web前端 - ITeye博客
        首先当我们访问网页的时候,很多大的图片从服务器上传输过来的时候,试想一下,如果浏览器不把图片缓存下来而是每次都要到服务器去取,那么每次都给服务器和网络造成了巨大的负担.         对于静态资源来说,浏览器不会缓存html页面的,所以你每次改完html的页面的时候,html都是改完立即生效的,不存在什么有缓存导致页面不对的问题.

浏览器缓存机制

- Leo Pay - Learning Correcting Improving
Cache-Control 是最重要的规则. 这个字段用于指定所有缓存机制在整个请求/响应链中必须服从的指令. 这些指令指定用于阻止缓存对请求或响应造成不利干扰的行为. 缓存指令是单向的,即请求中存在一个指令并不意味着响应中将存在同一个指令. cache-control 定义是:Cache-Control = "Cache-Control" ":" cache-directive.

让网站飞起来01---浏览器缓存技术

- SuperLucky - 博客园-首页原创精华区
缓存技术在在网站应用中非常重要,在减少服务器请求压力和用户浏览速度加块方面有着功不可没的功劳,. 昨天在我《网站优化--让你的网页飞起来》里面有人问道关于浏览器缓存原理的问题,萌发了我研究缓存技术的兴趣,本文主要. 在介绍缓存技术之前,我们先看一张LAMP网站的价格图,通过架构图我们可以很清晰的对网站整体缓存有一定认识.

Ajax解决浏览器的缓存问题

- - 博客园_首页
        今天做项目,几乎所有的提交都是通过ajax来提交,我测试的时候发现,每次提交后得到的数据都是一样的,调试可以排除后台. 代码的问题,所以问题肯定是出在前台. 每次清除缓存后,就会得到一个新的数据,所以归根到底就是浏览器缓存问题. 久,终于解决了,在这里总结一下.         我们都知道ajax能提高页面载入的速度主要的原因是通过ajax减少了重复数据的载入,也就是说在载入数据的同时将数据缓存到.

http协议:Web前端-HTTP Cache-control/浏览器缓存(转)

- - 互联网 - ITeye博客
HTTP协议分别在 1.0 / 1.1 两个时代推出了 Expires / Cache-control 两种cache策略,这里我们无需了解全部的细节,无需记住整个RFC内容,但是当我们需要使用HTTP cache策略时,我们需要注意以下细节:. Expires 是HTTP 1.0 那个时代的东西了,目前来看,可以不使用了,因为HTTP 1.0 的user agent占有率在 0.1% 以下(我们主要面向的web浏览器均默认使用HTTP 1.1),Cache-control 是 HTTP 1.1 的新特性,也是我们主要做文章使用cache策略的工具.

web基础-web工作原理,http协议,浏览器缓存

- - 浏览器 - 互联网 - ITeye博客
4,cookie和session. 平时用浏览器,输入网址后回车,页面响应我们想要浏览的内容,简单操作的背后蕴涵了什么原理. 当输入url回车后,客户端(浏览器)会去请求DNS服务器,通过DNS获取域名对应的IP地址,然后通过这个地址找到对应的服务器,要求建立TCP连接,建立连接,客户端发送httpRequest(请求包)后,服务器接收并开始处理请求,调用自身服务,返回httpResponse(响应包),客户端收到响应包后开始渲染body主体,等到全部接收,断开与该服务器端的TCP连接.

6种节省时间提升效率的浏览器功能

- - IE浏览器中文网站
不可否认,浏览器在现在的网络时代中越来越重要,未来可能扮演着更重要的角色. 工作、生活和娱乐都将无法没有浏览器的协助. 学会如何使用浏览器也成为了现 代人不可或缺的技能,更有效率的使用浏览器绝对可以帮助你节省更多的时间. 正所谓「时间就是金钱」,学习如何更技巧的使用浏览器对使用者而言可谓百利无害. 世界变迁迅速,如何节省你的时间并提升你的生产力非常重要,是时候学习一些技巧让做事的效率提升到极速了.

[转][转]浅析http协议、cookies和session机制、浏览器缓存

- - heiyeluren的Blog
来源:http://www.phpben.com/?post=77. 最近几天在复习http协议中headers,cookies、session、缓存等相关知识,发现些新知识点. 这篇文章注重结合PHP去理解这些内容,也就是比较注重实践部分. 一、            http headers          .

点击浏览器前进、后退键时刷新页面而不读取缓存

- - 浏览器 - 互联网 - ITeye博客
如何在点击浏览器前进、后退键时刷新页面而不读取缓存. 点击浏览器的后退键,总是会读取缓存,这样会导致有时候获取不到页面上的值,如果点击后退键时刷新页面而不读取缓存,这样就不会产生获取不到值的问题. 1、在jsp页面或者写在controller里面. 2、JavaScript解决方案(我没有试).      var ev = window.event;//获取event对象.

JS获取Ip和浏览器信息,用户逗留时间写进数据库

- - ITeye博客
已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.