IE下servlet缓存问题
如下图所示:
在html页面<input type="button" value="stop" οnclick="stop()">
<input type="button" value="start" οnclick="start()">
function stop(){ var msg = "Are you sure to stop the poll?"; if (confirm(msg) == true) { var url = "../servlet/poll/stopTimer"; $.get(url,{}, function(data, textStatus) { if(textStatus == "success"){ if(data == "false"){ alert("You didn't start the poll"); }else{ alert("Stop the poll successfully"); } } }); return true; } else { return false; } }
(1)点击stop按钮,调用stopTimer这个servlet从后台获取data的值,若第一次点击data=false。
(2)点击start按钮开启后,再次点击stop按钮,这时应该重新调用stopTimer这个servlet重新获取data的值为true。
(3)firefox这样做没问题,但ie由于默认采用缓存保存该页面上对同一个servlet的调用结果,也即第二次点击stop按钮时不再重新调用stopTimer该servlet,仍采用第一次调用的数据data=false。
(4)为了解决该问题,需要将设置禁用浏览器的缓存
在servlet:
response.setHeader("progma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
在html:
<%
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
%>