iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >ajax如何解决缓存问题
  • 153
分享到

ajax如何解决缓存问题

2024-04-02 19:04:59 153人浏览 安东尼
摘要

这篇文章主要介绍ajax如何解决缓存问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 这样是为了减少频繁访问服务器对其造成不必要的负担,但是同时也带来

这篇文章主要介绍ajax如何解决缓存问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

这样是为了减少频繁访问服务器对其造成不必要的负担,但是同时也带来了一定特殊业务逻辑满足不了的问题。
例如:
  需要通过前台一个select下拉列表来作为ajax的触发入口,同时将server返回的信息呈现在页面,并且往session或者数据库里面更新一些实际的东西的逻辑操作。
当第一次切换选项,也就是提交请求的时候一切都是正常的,但是如果切换相同选项因为浏览器的缓存原因,将不会走到server,实际得到的动态信息是从缓存中去取的。造成后台的逻辑没有被走到。代码如下:
aspx相关代码

复制代码 代码如下:


<asp:DropDownList ID="ddlProductList" runat="server">
<asp:ListItem Value="" Selected="True"></asp:ListItem>
<asp:ListItem Value="null">積立利率変動型終身保険</asp:ListItem>
<asp:ListItem Value="QIWL">  ・QIWL(H9)</asp:ListItem>
<asp:ListItem Value="KIWL">  ・KIWL(H11)</asp:ListItem>
<asp:ListItem Value="JIWL">  ・JIWL(H15)</asp:ListItem>
<asp:ListItem Value="null">積立利率変動型終身保険(市場金利連動型)</asp:ListItem>
<asp:ListItem Value="IIWL">  ・IIWL</asp:ListItem>
<asp:ListItem Value="HIWL">  ・HIWL</asp:ListItem>
<asp:ListItem Value="null">積立利率変動型終身保険(貯蓄重視型)</asp:ListItem>
<asp:ListItem Value="KIWLS">  ・KIWLS</asp:ListItem>
<asp:ListItem Value="null">ドル建積立利率変動型終身保険</asp:ListItem>
<asp:ListItem Value="ODIWL">  ・ODIWL</asp:ListItem>
<asp:ListItem Value="JDIWL">  ・JDIWL</asp:ListItem>
<asp:ListItem Value="HDIWL">  ・HDIWL</asp:ListItem>
<asp:ListItem Value="null"> 積立利率変動型養老保険(貯蓄重視型 米ドル建) </asp:ListItem>
<asp:ListItem Value="JDISE">  ・JDISE</asp:ListItem>
</asp:DropDownList>


aspx.cs代码

复制代码 代码如下:


if (!IsPostBack)
{
//为doropdownlist添加客户端事件
ddlProductList.Attributes.Add("onchange", "selectChange(this)");
}


Ajax.js代码

复制代码 代码如下:


var request;
function selectChange(obj) {
createHttpRequest();
var url = "AjaxService.aspx?product=" + obj.value;
request.open("GET",url,true)
request.onreadystatechange = resetRate;
request.send();
return false;
}
function createHttpRequest () {
if (window.ActiveXObject) {
request = new ActiveXObject("Microsoft.XMLHTTP");
} else if (window.XMLHttpRequest) {
request = new XMLHttpRequest();
}
}
function resetRate() {
if (request.readyState == 4) {
if (request.responseText.substring(0,1) == "#") {
document.getElementById("systemErrORMsg").innerhtml = request.responseText.substring(1);
document.getElementById("rate").innerHTML = "";
} else {
document.getElementById("rate").innerHTML = request.responseText;
document.getElementById("systemErrorMsg").innerHTML = "";
}
}
}


请求页面代码

复制代码 代码如下:


protected void Page_Load(object sender, EventArgs e)
{
string productShortName = Request.QueryString["product"];
if (productShortName != null && productShortName != "null" )
{
string result = Utility.GetProductRate(packageName);
Session["rate"] = result;
Response.Write(result);
}
}


经过分析问题出在XmlHttpRequest这个对象上面,切换选项后,并不是每次走到请求页面的逻辑中。查询了相关资料解决方案如下:
request.setRequestHeader("If-Modified-Since","0");
简单的说,Last-Modified 与If-Modified-Since 都是用于记录页面最后修改时间的 HTTP 头信息,只是 Last-Modified 是由服务器往客户端发送的 HTTP 头,而 If-Modified-Since 则是由客户端往服务器发送的头,可 以看到,再次请求本地存在的 cache 页面时,客户端会通过 If-Modified-Since 头将先前服务器端发过来的 Last-Modified 最后修改时间戳发送回去,这是为了让服务器端进行验证,通过这个时间戳判断客户端的页面是否是最新的,如果不是最新的,则返回新的内容,如果是最新的,则 返回 304 告诉客户端其本地 cache 的页面是最新的,于是客户端就可以直接从本地加载页面了,这样在网络上传输的数据就会大大减少,同时也减轻了服务器的负担。
另外还有另一个解决放案,不过还未经测试,理论上应该是可行的,就是在请求页面设置一下response的header:
Response.AddHeader("Cache-control", "no-cache");

以上是“ajax如何解决缓存问题”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网JavaScript频道!

--结束END--

本文标题: ajax如何解决缓存问题

本文链接: https://www.lsjlt.com/news/83078.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • ajax如何解决缓存问题
    这篇文章主要介绍ajax如何解决缓存问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 这样是为了减少频繁访问服务器对其造成不必要的负担,但是同时也带来...
    99+
    2022-10-19
  • 如何解决Ajax缓存问题
    这篇文章主要介绍“如何解决Ajax缓存问题”,在日常操作中,相信很多人在如何解决Ajax缓存问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何解决Ajax缓存问题”的疑惑...
    99+
    2022-10-19
  • AJAX中如何解决缓存问题
    这篇文章将为大家详细讲解有关AJAX中如何解决缓存问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。做一个项目用到Ajax,开始觉得挺好,后来发现一个问题,例如删除一项,...
    99+
    2022-10-19
  • 如何解决IE8下Ajax缓存问题
    小编给大家分享一下如何解决IE8下Ajax缓存问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Ajax简介AJAX即“Asyn...
    99+
    2022-10-19
  • 如何解决Ajax中浏览器的缓存问题
    这篇文章主要讲解了“如何解决Ajax中浏览器的缓存问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何解决Ajax中浏览器的缓存问题”吧! ...
    99+
    2022-10-19
  • Ajax与IE6缓存问题及解决方法
    本篇文章给大家分享的是有关Ajax与IE6缓存问题及解决方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。向大家简单介绍一下Ajax与IE6缓存问题,用ajax请求时,如果出现...
    99+
    2023-06-17
  • ajax调用中ie缓存问题怎么解决
    本篇内容主要讲解“ajax调用中ie缓存问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ajax调用中ie缓存问题怎么解决”吧!本文实例分析了ajax...
    99+
    2022-10-19
  • 如何解决IE针对Ajax请求结果的缓存问题
    本篇文章给大家分享的是有关如何解决IE针对Ajax请求结果的缓存问题,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在默认情况下,IE会针对请求...
    99+
    2022-10-19
  • jpa entitymanager缓存问题如何解决
    JPA EntityManager的缓存问题可以通过以下几种方式解决:1. 清除缓存:可以使用EntityManager的clear...
    99+
    2023-10-18
    jpa
  • 如何解决IE9下Ajax无法刷新数据的缓存问题
    这篇文章主要介绍“如何解决IE9下Ajax无法刷新数据的缓存问题”,在日常操作中,相信很多人在如何解决IE9下Ajax无法刷新数据的缓存问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2022-10-19
  • 怎么解决Ajax获取页面被缓存的问题
    本篇内容主要讲解“怎么解决Ajax获取页面被缓存的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决Ajax获取页面被缓存的问题”吧! ...
    99+
    2022-10-19
  • 如何解决vue页面缓存问题
    这篇文章给大家分享的是有关如何解决vue页面缓存问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。比如有一个列表页面,然后列表每项都有一个详情,之前用vue1.x的时候,页面缓存...
    99+
    2022-10-19
  • 如何解决Redis缓存穿透和缓存雪崩问题
    这篇文章主要为大家展示了“如何解决Redis缓存穿透和缓存雪崩问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决Redis缓存穿透和缓存雪崩问题”这篇文...
    99+
    2022-10-19
  • VueSPA如何解决浏览器缓存问题
    目录Vue SPA 解决浏览器缓存Vue 微信浏览器缓存问题Vue SPA 解决浏览器缓存 如何让发布到线上的 vue 单页应用能及时更新到浏览器,而无需用户强制刷新页面呢? 因为 ...
    99+
    2022-11-13
    Vue浏览器缓存 Vue缓存 Vue SPA 浏览器缓存
  • 如何解决vue中keep-alive缓存问题
    这篇文章将为大家详细讲解有关如何解决vue中keep-alive缓存问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。vue开发的时候,我们经常会有这样的需求:开发一个详...
    99+
    2022-10-19
  • 如何解决Redis缓存异常的问题
    这篇文章将为大家详细讲解有关如何解决Redis缓存异常的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。缓存雪崩缓存雪崩是指缓存同一时间大面积的失效,所以,后面的请求都...
    99+
    2022-10-19
  • 如何解决redis缓存穿透、缓存击穿、缓存雪崩的问题
    这篇文章主要介绍了如何解决redis缓存穿透、缓存击穿、缓存雪崩的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。缓存穿透:key中对应的...
    99+
    2022-10-18
  • 如何解决vue单页缓存存在的问题
    这篇文章主要介绍了如何解决vue单页缓存存在的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.css同名覆盖,解决方法:父组件加上sc...
    99+
    2022-10-19
  • Redis缓存问题怎么解决
    这篇文章主要讲解了“Redis缓存问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Redis缓存问题怎么解决”吧!LevelDB 来了!它是 Go...
    99+
    2022-10-19
  • vue缓存问题怎么解决
    Vue缓存问题可以通过以下几种方式来解决:1. 使用路由的meta信息:在路由配置中,可以设置meta信息,包括是否需要缓存组件等。...
    99+
    2023-05-23
    vue缓存问题 vue
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作