IE下Ajax缓存问题的快速解决方法(get方式) |
本文标签:Ajax,缓存,IE 折腾了半天,程序中使用jquery的load方法进行请求,很奇怪为啥第二次无法发送请求 。百度了一把,谁知load是用get方式进行请求的,因此IE浏览器对 其进行缓存了 。网上搜了很多解决方案,一大把,下面是我认为比较全面的解决方案 。主要分为客户端解决和服务端解决 。 1.客户端解决方案 1: 在AJAX请求的页面后加个随机函数,我们可以使用随机时间函数 在javascript发送的URL后加上t=Math.random() 2: 在XMLHttpRequest发送请求之前加上XMLHttpRequest.setRequestHeader("If-Modified-Since","0") 一般情况下,这里的XMLHttpRequest不会直接使用 实践证明,两种方法都非常有效 。
以Struts2为例: Xml代码 复制代码 代码如下: <package name="json-nocache" extends="json-default"> <interceptors> <interceptor name="cachingHeadersInterceptor" class="com.ssa.pct.web.interceptor.CachingHeaderInterceptor" /> <interceptor-stack name="defaultSecurityStack"> <interceptor-ref name="defaultStack" /> <interceptor-ref name="cachingHeadersInterceptor" /> </interceptor-stack> </interceptors> <default-interceptor-ref name="defaultSecurityStack" /> </package> Java代码 复制代码 代码如下: public class CachingHeaderInterceptor extends AbstractInterceptor { private static final long serialVersionUID = 1L; public String intercept(ActionInvocation invocation) throws Exception { } |