日期:2014-05-16  浏览次数:20608 次

Ajax中缓存解决办法
由于AJAX的缓存是由浏览器维持,对发向服务器的url,ajax仅在第一次请求时与服务器交互信息,而之后的请求中,ajax认为是同一地址便不再向服务器提交请求,而是直接从缓存中提取数据。那么用什么方法处理缓存问题呐?

常用方法如下:
1、在服务端加 header("Cache-Control: no-cache, must-revalidate");(如php中)
2、在ajax发送请求前加上 anyAjaxObj.setRequestHeader("If-Modified-Since","0");
3、在ajax发送请求前加上 anyAjaxObj.setRequestHeader("Cache-Control","no-cache");
4、在 Ajax URL 参数后加上 "?fresh=" + Math.random()
5、在 URL 参数后加上 "?timestamp=" + new Date().getTime().valueOf();
6、用POST替代GET:不推荐方法,违法了操作本意


最常用的方法是每次给url地址上加上时间戳,这样不会存在一次请求便不在向服务器请求。但是这也需要看具体的业务需求,因为缓存可以减少http请求,对于访问量大网站减少了服务器压力。对常用静态数据不需要每次去服务器获取,第一次取回后便缓存在客户端,如常用城市名称等数据。
1 楼 robin_hood 2010-09-30  
第5种常用
2 楼 mbn 2010-09-30  
4和5其实是一样的, 也是前端开发者比较常用的方式。jQuery的ajax()中有配置参数cache:false; 其源码也是同样的道理。