一般动作
登录
Wiki: BROPEN ▼: Document Index
»
Space: FAQ ▼: Document Index
»
Page: AJAX 缓存概述
搜索
zh
页面动作
导出 ▼: 以PDF格式导出 以RTF格式导出 以HTML格式导出
更多动作 ▼: 打印预览 察看源码
欢迎进入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上被李小翔创建

- 评论 （0）
- 附件 （0）
- 记录
- 信息

# 快速链接

- 首页
- 新闻动态
- FAQ

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