AJAX 缓存概述?
李小翔
2013-11-26 10:55

内容列表

供稿人：刁隆
使用 AJAX 时，常常碰到缓存的问题：
比如有缓存的话，总是看到老数据（而且各个浏览器对缓存的支持方式或者程度还不一样，尤其是IE浏览器）；没有缓存的话，对系统又产生不必要的压力。
通常情况下，可以通过后台或前台两种方式来进行缓存控制，后台的无非是在 response 中设置一些缓存头（比如在控制器中调用 BroToolkit 提供的  nocache() 方法），前台可以通过使用 POST 方式避免缓存，或者在 GET 方式中设置一个随机数（或者时间戳）来避免缓存。
下面就一些常见的前台处理缓存的方式进行简介与示例，示例中均使用 jquery：
1、使用 post 方式代替 get 方式，以避免缓存
$j.post( url, { x:1, y:2} , function(result) { 
    ....
} )
2、禁用 ajax 缓存（仅限 jqeury 的各种ajax方法）
// 设置下一次 ajax 调用时，禁用缓存
$j.ajaxSetup( { cache:false}  )
// 常用的一些 ajax 方法
$j.get( ...
$j.load( ....
$j.getJSON( ...
3、手动在url或者请求参数中添加一个时间戳来避免get缓存（效果和2完全一样）
$j.getJSON( url, { _:new Date().getTime()} , function(data) { 
    ....
} )
4、借用方法3的方式，实现允许某个时间段内使用缓存
// 当前时间戳除以 5 分钟，作为参数提交，可以实现5分钟的缓存
$j.getJSON( url, { _:Math.floor(new Date().getTime()/300000)} , function(data) { 
    ....
} )