欢迎进入Wiki » FAQ » AJAX 缓存概述?

AJAX 缓存概述?

在2013-11-26 10:55上被李小翔修改
评论 (0) · 附件 (0) · 记录 · 信息

供稿人:刁隆

使用 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) {
    ....
})
标签: ajax jquery cache
在2013-11-26 10:55上被李小翔创建

Copyright © 2013 北京博瑞开源软件有限公司
京ICP备12048974号