`

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

阅读更多

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

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

        对于静态资源来说,浏览器不会缓存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

  • 大小: 66.5 KB
分享到:
评论

相关推荐

    浏览器缓存机制介绍与缓存策略剖析.pptx

    浏览器缓存机制介绍与缓存策略剖析 浏览器缓存机制是指浏览器在请求资源时,对已经请求过的资源进行缓存,以便下次请求时可以直接从缓存中获取,从而提高页面加载速度和减少服务器的压力。本文将详细介绍浏览器缓存...

    HTTP+JS+浏览器缓存技术

    Expires 是 Web 服务器响应消息头字段,在响应 http 请求时告诉浏览器在过期时间前浏览器可以直接从浏览器缓存取数据,而无需再次请求。Expires 的优点是可以减少服务器的负载,但其缺点是不能实时更新。 二、Cache...

    Loadrunner负载测试 浏览器缓存设置

    在负载测试中,正确配置浏览器缓存能帮助我们更好地模拟真实的用户行为,例如,当用户返回已访问过的页面时,浏览器通常会从缓存中加载资源,而不是重新从服务器请求。 在LoadRunner中,我们可以使用Vuser脚本来...

    js浏览器缓存.doc

    js浏览器缓存.docjs浏览器缓存.docjs浏览器缓存.docjs浏览器缓存.doc

    浏览器缓存例子浏览器缓存例子浏览器缓存例子浏览器缓存例子

    2. **协商缓存(ETag/Last-Modified)**:如果强缓存失效,浏览器会向服务器发送请求,服务器通过比较资源的`ETag`(实体标签)或`Last-Modified`(最后修改时间)来判断资源是否更新。若资源未改变,服务器返回304 ...

    浏览器缓存查看及恢复工具

    当再次访问相同网页时,浏览器会首先检查缓存,如果资源未过期,就直接从本地加载,提高页面加载速度。这涉及到HTTP协议中的Cache-Control、ETag、Last-Modified等头信息,用于控制缓存策略。 “浏览器缓存查看及...

    清除Flash缓存和各种浏览器缓存的方法.docx

    清除Flash缓存和各种浏览器缓存的方法 清除Flash缓存和各种浏览器缓存的方法是计算机用户常用的技术技能,以解决浏览器缓存引发的问题,如卡机、进不去、游戏滞后等问题。下面将详细介绍清除Flash缓存和各种浏览器...

    jsp去除浏览器缓存

    jsp去除浏览器缓存

    浏览器缓存读取工具

    1. **缓存文件浏览**:它能列出Chrome浏览器所有已缓存的文件,包括文件名、URL、文件大小、存储时间等详细信息,便于用户查找特定的缓存文件。 2. **按时间排序**:用户可以根据文件的存储时间进行排序,查看最近...

    Chrome浏览器缓存查看导出工具(支持最新版)

    当用户再次访问已经浏览过的网页时,浏览器会尝试从本地缓存中加载这些资源,而不是重新从服务器请求,从而减少网络带宽的使用和加载时间。 Chrome浏览器提供了内置的缓存查看方式,但过程较为复杂,通常需要通过...

    浏览器缓存目录设置

    浏览器缓存目录设置,配合沙盘使用,不但会提升上网速度,而且还能减少磁盘碎片

    三星T231如何清除浏览器缓存-T231清除浏览器缓存教程.docx

    三星T231如何清除浏览器缓存-T231清除浏览器缓存教程.docx

    Microsoft edge 浏览器缓存改成内存虚拟盘(盘符R)

    Microsoft edge 浏览器缓存改成内存虚拟盘(盘符R) Microsoft edge 浏览器缓存改成内存虚拟盘(盘符R) Microsoft edge 浏览器缓存改成内存虚拟盘(盘符R)

    浏览器缓存策略Httpwatch

    1. Cache-Control:控制缓存的行为,如`no-cache`(不缓存)、`max-age`(指定缓存有效期)、`max-stale`(接受过期但不超过指定时间的缓存)、`min-fresh`(要求对象新鲜度大于特定值)。 2. ETag:资源的唯一...

    浏览器缓存相关知识.zip

    Expires是一个较老的强缓存管理header,它包含一个GMT格式的绝对时间字符串,告诉浏览器在这个时间之前可以直接从浏览器缓存中加载资源,而无需去服务器校验。然而,Expires存在一个潜在的问题,那就是它依赖于...

    如何清除浏览器缓存

    然而,如果缓存长时间不清理,可能会导致浏览器运行缓慢、占用大量磁盘空间、泄露个人隐私等问题。因此,清除浏览器缓存是非常必要的。 Chrome 浏览器清除缓存方法 要清除 Chrome 浏览器的缓存,可以按照以下步骤...

    如何删除浏览器缓存.docx

    1. 提高网页访问速度:浏览器缓存可以将经常访问的网页内容存储在电脑里,从而减少网页加载时间,提高访问速度。 2. 节省带宽:浏览器缓存可以减少网页加载时所需的带宽,从而节省带宽和流量。 3. 降低服务器负载:...

    UC浏览器缓存视频文件合并工具

    1、若是UC浏览器的视频文件:Y2hlbmppbmdjb25n0 Y2hlbmppbmdjb25n1 Y2hlbmppbmdjb25n2......用此工具类(合并无加密)。 2、若是0.ts、1.ts、2.ts类型视频合并到此:...

    Chrome浏览器缓存目录的小工具

    Chrome浏览器是全球广泛使用的网页浏览器,它在处理网页加载时采用了高效的缓存机制,以提高用户的浏览速度和体验。ChromeCacheView是一款专为查看和分析Chrome浏览器缓存设计的实用小工具,尤其对于开发者和网络...

    浏览器HTTP缓存运行机制流程图.zip

    浏览器会比较当前时间与过期时间,如果未过期则使用缓存。 2. 协商缓存: 当强缓存不适用,浏览器会向服务器发送一个验证请求,询问资源是否是最新的。这通常涉及两个响应头字段:`ETag`和`Last-Modified`。 - `...

Global site tag (gtag.js) - Google Analytics