近期开发时采用AJAX, 在客户应用时发现一个问题:就是有时反应比较慢, 而且有时是旧内容.
经查询,总结网上写的一些缓存文章如下:
***************************************************************************
文章一:本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cool_rain_man/archive/2008/04/03/2247708.aspx
两种方法
第一种:
模板上加上
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">
强制刷新
第二种:
url加上随机数变量
url = "xxx.asp?" + Math.round(Math.random()*100)
***********************************************************************************************************************
文章二:网页出处:http://www.cnblogs.com/hacker84/archive/2008/03/03/1088514.html
第一种:在 Ajax 的 URL 参数后加上 "?fresh=" + Math.random(); //当然这里参数 fresh 可以任意取了
第二种:在 URL 参数后加上 "?timestamp=" + new Date().getTime();
顺便说下,response.flush()的方法容易出问题~~~
******************************************************************************
文章三:IE缓存知识 网页出处:http://wenda.tianya.cn/wenda/thread?tid=78e536d29fa76460
什么是ie缓存
为了提高访问网页的速度,internet explorer浏览器会采用累积式加速的方法,将你曾经访问的网页内容(包括图片以及cookie文件等)存放在电脑里。这个存放空间, 们就称它为ie缓存。以后 们每次访问网站时,ie会首先搜索这个目录,如果其中已经有访问过的内容,那ie就不必从网上下载,而直接从缓存中调出来,从而提高了访问网站的速度。
设置ie缓存大小:
要提高ie的访问速度,ie缓存是必不可少的。ie缓存默认安装在系统区,而且会需要占用较大的系统空间。所以如果你的系统空间的确很紧张,可以将缓存占用的空间设得小一点,在ie的“工具”菜单下选择“internet选项”,然后在“常规”选项卡中你会看到有“internet临时文件”这一项,单击“设置”按钮,然后在弹出的“设置”对话框中将缓存大小设置为一个合适的值。你也可以直接将ie缓存移动到其它位置上去。
“internet临时文件”下单击“设置”,然后在“设置”对话框中单击“移动文件夹”按钮,在“浏览文件夹”中选择文件夹,将ie缓存移动到其他地方,这样就不必担心ie缓存太大,占用更多空间了。
ie缓存就是上网后留下的痕迹。
可以删除。。删除后会加快浏览器的速度``
只有好处没坏处`
为了提高访问网页的速度,internetexplorer浏览器会采用累积式加速的方法,将你曾经访问的网页内容(包括图片以及cookie文件等)存放在电脑里。这个存放空间, 们就称它为ie缓存。以后 们每次访问网站时,ie会首先搜索这个目录,如果其中已经有访问过的内容,那ie就不必从网上下载,而直接从缓存中调出来,从而提高了访问网站的速度。
如何删除?
1、点击打开一个ie。
2、点击菜单栏中的“工具”菜单中的“internet选项”
3、在弹出的对话框中点击“删除文件”.
4、在弹出的对话框中”删除所有脱机内容”打勾,之后点确定.
5、点击确定后,鼠标可能会变成比较忙的状态,这是因为缓存较多的缘故,一般情况下十秒左右鼠标就会恢复正常。之后再点击右下角的“确定”退出。这样电脑ie的缓存就清除完毕了。
另外还可以用windos优化大师删除
*****************************************************************************************
文章四:用ajax清除浏览器缓存的js、css、图片等 (来源:http://www.javaeye.com/topic/228187)
为了减小浏览器与服务器之间网络传输压力,往往对静态文件,如js,css,修饰的图片做cache,也就是给这些文件的HTTP响应头加入Expires和Cache-Control参数,并指定缓存时间,这样一定时间内浏览器就不会给服务器发出任何的HTTP请求(除了强制刷新),即使在这段时间内服务器的js或css或图片文件已经更新多次,但浏览器的数据依然是原来最能初cache的旧数据,有没有办法让浏览器拿到已经修改后的最新数据呢?
有,方法是用ajax请求服务器最新文件,并加上请求头If-Modified-Since和Cache-Control,如下:
- $.ajax({
- type: "GET",
- url: "static/cache.js",
- dataType: "text",
- beforeSend :function(xmlHttp){
- xmlHttp.setRequestHeader("If-Modified-Since","0");
- xmlHttp.setRequestHeader("Cache-Control","no-cache");
- }
- });
这里用了jquery.
这样浏览器就会把最新的文件替换掉本地旧文件。
当然,这里还一个问题就是js必须知道服务器更新了那个js、css、图片,利用cookie和时间版本应该可以解决.
******************************************************************************
下页是一些实例: