ajax 缓存

当jqueryload一个页面时候只加载一次解决方法有俩种

1jQuery提供一个防止ajax使用缓存的方法,

<!--

<scripttype="text/javascript"language="javascript">

$.ajaxSetup({

cache:false//closeAJAXcache

});

</script>

-->

这个方法在每次load页面的时候都要执行一次否则只会再第一次时候有效其他load还会读取缓存页面

2第二就是修改load加载的url地址

例如再url多加个时间参数就可以这个方法再wap1.0中我也用过避免读取缓存

<!--

functionloadEventInfoPage(eventId){

$.ajaxSetup({

cache:true//AJAXcache下面加上时间后load的页面中的js、css图片等都会重新加载,

//加上这句action会重新加载,但是js、css、图片等会走缓存

});

$("#showEventInfo").load(ctx+"/custEvents/viewEvent.action",

{"complaint.Id":eventId,"tt":(newDate()).getTime()},function(){})

}

jsp页面中的下面两句中,把第一句去掉,第二句去掉no-cache,这样就会读取缓存中的js、css、图片等,Firebug网络中js、css、图片等的每一个请求的状态就会从200(不读缓存,重新请求)变成了304(读缓存中的数据)

<metahttp-equiv="pragma"content="no-cache"/>

<metahttp-equiv="content-type"content="no-cache,must-revalidate"/>

发现在IE浏览器下,还是把js放在<head>内会更理想,$.ajaxSetup对IE看起来没有效果或效果不大,而放在<head>内,只是初次访问页面时会稍微卡一下,二次访问就不影响了。

-->

还有就是之前查到的其他两种办法,针对该问题,不起作用:

1、设置html的缓存

<!--

<METAHTTP-EQUIV="Pragma"CONTENT="no-cache">

<METAHTTP-EQUIV="Cache-Control"CONTENT="no-cache">

<METAHTTP-EQUIV="Expires"CONTENT="0">

-->

2、java设置缓存

<!--

<%

request.setAttribute("decorator","none");

response.setHeader("Cache-Control","no-cache");//HTTP1.1

response.setHeader("Pragma","no-cache");//HTTP1.0

response.setDateHeader("Expires",0);//preventscachingattheproxyserver

%>

-->

相关推荐