简明现代魔法 -> Ajax技术 -> 解决 Ajax 缓存的小技巧

解决 Ajax 缓存的小技巧

2010-02-21

2月18号的时候写了一篇文章Ajax 随机刷新文字,当时程序在 Chrome 和 FireFox 下跑起来了,但是在 IE 下却失效了。当时不知道是什么原因,现在总算弄清了,知道是 IE 缓存的问题。

一个解决办法就是,在 ajax 发送请求前加上下面一条语句:

xmlHTTP.setRequestHeader("If-Modified-Since","0");  

也就是类似于这样:

xmlHTTP.open("get", URL, true);  
xmlHTTP.onreadystatechange = callHTML;  
xmlHTTP.setRequestHeader("If-Modified-Since","0");  
xmlHTTP.send();  

现在程序在 IE 下也可以正常运行了。

Web 开发中的缓存问题

一般情况下,浏览器都会缓存已经访问过的页面内容,关于如何禁止浏览器缓存的介绍,在网上到处都有相关的文章,但是,关于浏览器如何利用缓存,如何处理缓存的讲解,却鲜有人谈及。我一直为这个问题所困惑,这个问题也是绝大多数有经验的 Web 开发人员所共同面临的问题,我有些朋友已做过几十个大大小小的 Web 项目,当与他们交流这些问题时,他们虽然也在项目中遇到和解决过这些问题,但由于没有足够的时间和精力来仔细思考这些问题的原因和细节,他们对这些问题始终也是一知半解、含糊不清,而目前又很少关于这些问题的专门和详细讲解。

HttpServlet 类为 If-Modified-Since 请求头和 Last-Modified 头字段的这种应用提供了处理机制,当继承了 HttpServlet 类的 Servlet 程序接收到一个 GET 方式的访问请求时,HttpServlet 中重载的 service 方法在调用 doGet 方法之前,它还将调用 getLastModified 方法,并根据 getLastModified 方法的返回值来决定是否调用 doGet 方法和在响应消息中是否生成 Last-Modified 头字段,具体规则如下:

随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们