再论怎么有效利用浏览器缓存之------怎么避免浏览器缓存静态文件. --ArtWind‘...
来源:百度文库 编辑:神马文学网 时间:2024/04/29 12:37:10
对于动态文件,比如 index.asp?id=... 或者 index.aspx?id=... 相信有经验的程序员都知道怎样禁止浏览器缓存数据了.
但是对于静态文件(css,jpg,gif等等), 在什么场合下面我们需要禁止浏览器缓存他们,怎么做?
本文讨论的主题是如何防缓存, 尤其是如何防止静态文件被缓存..
在 RE:对博客园URL的一些调整建议, 二级域名不利于客户端浏览器缓存 一文中,我提到了怎么最大化的
利用浏览器缓存功能,来提高客户端浏览速度, 减轻服务器负担的.
但是事物总是一分为二的,并不是所有的场合都要使用缓存的. 有时候我们的数据被缓存了反而会给我们带来麻烦.
对于动态数据(从数据库读取生成的那些),我们可以通过以下方法来禁止浏览器缓存。
‘asp 为例 禁止缓存
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "No-Cache"
对于Ajax 的请求(不管是静态数据还是动态数据):
//以下三种方法使用其中任何一种方法都可以
xmlhttp.setRequestHeader("Cache-Control","no-cache");
//或者
xmlhttp.setRequestHeader("If-Modified-Since","0");
//或者
xmlhttp.Open(url+‘?rnd=‘+Math.random(),....)
如果使用 prototype.js , 用类似这样的代码
new Ajax.Request(url,{method:"get",requestHeaders:["Cache-Control","no-cache"]})
或者
new Ajax.Request(url,{method:"get",requestHeaders:["If-Modified-Since","0"]})
什么情况下,要禁止静态文件缓存:
1、经常可能要改动的 js, css.
比如 一个html 文件, test.html 在 1.0版本中。可能是这样
修改后 v1.1版本:
新增加了一个foo.js 同时,也改动了common.js , 在common.js 中定义了新的类,并在foo.js 中使用了common.js.
在这种情况下如果以前用户浏览过 1.0版本的 html 文件,那么他的浏览器自动缓存了 common.js
当他浏览新版本的时候,因为使用的是 v1.1的 foo.js 和 v1.0的 common.js ,这样将导致脚本出错。
解决方法探讨:
因为css,js 是通过
其中 ver=113 的 113就是版本号,一般都是采用 CVS 或其他工具生成的开发版本号。
这样真正做到了应该缓存的时候缓存静态文件,当版本有更新的时候从获取最新的版本,并更新缓存。
对于图像 来有效利用和更新缓存.
唉,现在在CSDN的Web版,不知道有多少人在重复问着同一个问题。“怎么通过程序删除清空客户端的浏览器缓存”.........
但是对于静态文件(css,jpg,gif等等), 在什么场合下面我们需要禁止浏览器缓存他们,怎么做?
本文讨论的主题是如何防缓存, 尤其是如何防止静态文件被缓存..
在 RE:对博客园URL的一些调整建议, 二级域名不利于客户端浏览器缓存 一文中,我提到了怎么最大化的
利用浏览器缓存功能,来提高客户端浏览速度, 减轻服务器负担的.
但是事物总是一分为二的,并不是所有的场合都要使用缓存的. 有时候我们的数据被缓存了反而会给我们带来麻烦.
对于动态数据(从数据库读取生成的那些),我们可以通过以下方法来禁止浏览器缓存。
‘asp 为例 禁止缓存
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "No-Cache"
对于Ajax 的请求(不管是静态数据还是动态数据):
//以下三种方法使用其中任何一种方法都可以
xmlhttp.setRequestHeader("Cache-Control","no-cache");
//或者
xmlhttp.setRequestHeader("If-Modified-Since","0");
//或者
xmlhttp.Open(url+‘?rnd=‘+Math.random(),....)
如果使用 prototype.js , 用类似这样的代码
new Ajax.Request(url,{method:"get",requestHeaders:["Cache-Control","no-cache"]})
或者
new Ajax.Request(url,{method:"get",requestHeaders:["If-Modified-Since","0"]})
什么情况下,要禁止静态文件缓存:
1、经常可能要改动的 js, css.
比如 一个html 文件, test.html 在 1.0版本中。可能是这样
修改后 v1.1版本:
新增加了一个foo.js 同时,也改动了common.js , 在common.js 中定义了新的类,并在foo.js 中使用了common.js.
在这种情况下如果以前用户浏览过 1.0版本的 html 文件,那么他的浏览器自动缓存了 common.js
当他浏览新版本的时候,因为使用的是 v1.1的 foo.js 和 v1.0的 common.js ,这样将导致脚本出错。
解决方法探讨:
因为css,js 是通过
其中 ver=113 的 113就是版本号,一般都是采用 CVS 或其他工具生成的开发版本号。
这样真正做到了应该缓存的时候缓存静态文件,当版本有更新的时候从获取最新的版本,并更新缓存。
对于图像 来有效利用和更新缓存.
唉,现在在CSDN的Web版,不知道有多少人在重复问着同一个问题。“怎么通过程序删除清空客户端的浏览器缓存”.........
再论怎么有效利用浏览器缓存之------怎么避免浏览器缓存静态文件. --ArtWind‘...
如何清除IE浏览器缓存?
怎么清理系统缓存
浏览器缓存 - Rambing - JavaEye技术网站
浏览器缓存的研究 - bluesky - JavaEye技术网站
浏览器缓存总结 - 一生一火花 - JavaEye技术网站
怎么清理C盘的缓存
什么是IE缓存文件?
删除缓存文件方法
windows XP 系统怎么删除IE8浏览器?
利用 iBatis 缓存 - zxjava - JavaEye技术网站
*22.1* 文件浏览器
*31.1* 文件浏览器
如何防止IE缓存jsp文件
如何清除IE缓存和脱机文件
怎么取客户端的浏览器类型和操作系统类型
IE浏览器怎么切换多窗口模式/标签模式?
hibernate缓存
hibernate缓存
apache缓存
WAP?缓存
糖果浏览器之降龙十八掌
[原创]开机杀掉PPS自动上传程序和删除PPS本机缓存文件 - 软硬兼施之电脑·数码 - ...
用winrar读取ie缓存文件方法 — Windows Live