通常浏览器会将XMLHttpRequest响应缓存 起来,这很有用,但有时候这并不是你想要的,因此你必须对缓存加以控制.
我 们通常以GET和POST发出请求,其中GET作为查询用(GET只应该作为查询用,作为只读查询,而POST用于插入、修改、删除等相应操作.),如果 你用POST作为查询当然数据通常不会被缓存起来,但如果你理解并遵循RESTful service的解释你会用GET(在你需要的仅仅是查询之时).而此时你将无法避免的会发现GET并不总是像你所想的一样正常工作 ,当你明白这是缓存在作怪时你需要对其进行控制,让它在需要的时候才缓存被请求的数据.
方法 :
而控制缓存通常有5种
1、你可以给请求的url加一个时间戳,让url具有独特性,
var url="simple.php?figure1=value1&figure2=value2&tmpTime="+new Date().getTime();
这是你会发现这种简单的方法竟然给程序带来令人吃惊的健壮性和可移植性.
2、你还可以为请求加上头部信息
Req.setRequestHeader("If-Modified-since","Mon,3 Mar 2008 16:00:00 GMT");
3、也可以在web服务器里设置响应头部以抑制响应被缓存,
header("Mon,3 Mar 2008 16:00:00 GMT");
header("Last-Modified:".gmdate("D,d M Y H:i:s"."GMT"));
header("Cache-Control:no-cache,must-revalidate");
header("Pragma:no-cache");
REST 所解释,POST和GET不应互换,但无论如何,POST也不是总有效的在某些资源上实际上也会缓存POST响应.
4、使用POST而不是GET不过有时POST还是被缓存的,虽如 5. 在服務器端可以試試這個,如果你有機會獲得回應(你也許能夠做到這一點,通過過濾器)。
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Expires", "0");
另一方面,在服务器消耗不太可能接近缓存是,缓存是个好东西, 为鼓励缓存,你甚至可以无视以上建议而在响应头部加上将来的某个时间或更好的对于较小数据把它缓存于javascrīpt程序本身(见前面"客户端缓存").
原文出处:http://www.subsun.net/html/2008/25.html
this.res.setHeader("Expires", "-1");
this.res.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
this.res.setHeader("Pragma", "no-cache");