后台

Response.Buffer=true;   
Response.ExpiresAbsolute=System.DateTime.Now.AddSeconds(-1);
Response.Expires=0;
Response.CacheControl="no-cache";

html页面

  • <meta http-equiv="pragma" content="no-cache">  
  •  <meta http-equiv="cache-control" content="no-cache">  
  •  <meta http-equiv="expires" content="0">   
  • 3.防止Ajax缓存

    如果,你的页面,已经设置了防止JSP,HTML的页面缓存,但发觉页面缓存,始终存在,就要考虑是否Ajax造成的页面缓存了。

    1)设置了,如上1,2之后

    Ajax缓存,产生的原因是:request, url的地址上:
    IE中如果XMLHttpRequest提交的URL与历史一样则使用缓存,根本不向服务器端提交。因此无法取到刚提交的数据。

    针对ajax,需要如下设置:

    方法一:加时间戳 var url = BaseURL + "&timeStamp=" + new Date().getTime();
    方法二:加随机数 var url = BaseURL + "&r=" + Math.random();

    总结:原引(http://www.javaeye.com/topic/150162)

    在jsp页面中,光是使用html的<meta> tag是无法禁止缓存的。一定要加上

    response.setHeader("Pragma","No-cache");
    response.setHeader("Cache-Control","no-cache");
    response.setDateHeader("Expires", 0);

    有人肯定会说,这个跟html的tag设置没有不同啊。的确,我也觉得,但实践证明,没有这几句,光靠html tag不行。

    所以当action会返回页面时,有以下这两种情况:

    a,返回的页面没有写上上面的禁止cache的语句(或者只写了html tag)。IE存储的是URL link + page result(cache eabled)。这也就是导致了之前为什么还会有cache的原因

    b,返回的页面写上了禁止cache语句 。IE存储的是URL link + page result(cache disabled)。这样才能够实现到我们想要的目的。每次都会真正的发出request