Prototype与jQuery Ajax缓存机制差异及解决方案

作者:安全边界

时间:2026-10-23

浏览:489

本文对比了jQuery与Prototype在实现Ajax轮询时的代码差异,重点分析了Prototype中因URL相同导致的缓存问题。当使用setInterval进行定时刷新时,Prototype会返回缓存数据导致页面更新异常或空白。通过为URL添加随机参数可有效绕过缓存,确保每次请求获取最新数据。

文章目录

首先展示jQuery和Prototype两种库中Ajax功能的具体实现方式。


jQuery Ajax实现示例

jQuery的实现方式如下:


代码示例:

 
<script language="javascript">
$(function(){
var box = {};
var remoteUrl = 'index.php';
box.interval = 5*60*1000;//5分钟
box.showBoxInfo = function() {
jQuery.get(remoteUrl, function(data){
var msg_box = $('#msg_box');
msg_box.innerHTML = data;
} 
}); 
} 
box.run = function(){
this.showBoxInfo();
setInterval(this.showBoxInfo,this.interval);
}; 
box.run();
}) 
</script>

Prototype Ajax实现示例

Prototype的实现方式如下:


代码示例:

 
<script language="javascript">
var box = {};
box.interval = 5*60*1000;//5分钟
box.showBoxInfo = function(){
var pars = "";
var remoteUrl = 'index.php';
var myAjax = new Ajax.Request(
remoteUrl,
{ 
method: 'get',
parameters: pars,
onComplete: box.showResponse
}); 
}; 
box.showResponse = function(data){
var msg_box = $("msg_box") ;
msg_box.innerHTML = data.responseText;
}; 
box.run = function(){
this.showBoxInfo();
setInterval(this.showBoxInfo,this.interval);
}; 
box.run();
</script>

Prototype缓存问题与解决方案

在实际引入setInterval函数后,发现Prototype无法正确刷新内容,原因何在?


这是因为Prototype对相同URL的请求存在缓存机制,导致无法获取最新数据。特别是在用户按下F5或点击浏览器“刷新”按钮后,Ajax响应区域可能出现空白错误,因此必须避免Prototype的缓存行为。


解决方法是在Prototype请求的URL后添加随机数参数。


原始代码:var remoteUrl = 'index.php';


修改后代码:var remoteUrl = 'index.php?rand='+Math.random();


通过GET方式添加一个与页面显示内容无关的随机参数,即可有效防止缓存。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章