解决Ajax GET请求缓存导致数据更新失效问题

作者:霁月时间:2026-10-25 08:49:39浏览:585

本文针对Ajax GET请求在浏览器中产生的缓存问题,分析了数据未随后端逻辑更新而变化的现象。通过对比修改前后的代码,展示了如何在Ajax.Request中通过设置requestHeaders(如Cache-Control: no-cache)来强制刷新请求,确保获取最新数据。

Ajax GET请求缓存问题分析

代码如下:

var paras="ajaxFlag=getMarkerIDs";
var myAjax=new Ajax.Request(
"AddInfoHandler.ashx",
{method:'get',parameters:paras,onComplete:showGetMarkerIDsResponse}
);

由于系统存在切换数据库的操作,首次进入数据库A时,列表加载正常,点击节点通过Ajax请求地图显示A的数据。然而,当点击IE浏览器后退按钮并进入数据库B的Treeview时,虽然列表加载正确(非Ajax部分),但点击节点地图显示的数据仍为A的数据(Ajax部分)。在AddInfoHandler.ashx中设置断点发现,再次执行上述操作时,断点命中的是进入A数据库的逻辑,而进入B数据库时并未命中断点。这令人疑惑的是,即使未进入页面,Ajax仍有返回数据,且与上一次一致,推测是浏览器缓存机制在起作用。最终通过查阅资料修改代码如下:


通过RequestHeaders解决缓存问题

代码如下:

 
var myAjax=new Ajax.Request(
"AddInfoHandler.ashx",
{method:'get',requestHeaders: ['Cache-Control','no-cache','If-Modified-Since','0'],parameters:paras,onComplete:showGetMarkerIDsResponse}
); 

以下参考内容可参见以前发布的文章:


https://www.jb51.net/article/22074.htm


response.setHeader参数、用法的介绍

详细出处参考:https://www.jb51.net/article/16437.htm

作者最新文章