防止 ajax 调用缓存的正确方法是什么?

2024-01-07

我有一个 AJAX 调用,它根据简单的标准参数(例如一年中的月份)从不断变化的数据库返回值。在 IE 中,此函数返回缓存的数据,但它不应该返回。我已经监控了服务器端,并且客户端没有联系它。

现在,我的标题问题已经以不同的方式被问过,已经在这里问过很多次了。最重要的两个解决方案是:

  • set cache: false
  • 传递随机数/字符串/时间戳以使调用唯一。

事情是这样的cache: false不起作用,至少在我的应用程序中不起作用。另一方面,传递一个唯一的字符串来防止缓存,似乎是一个快速修复技巧。我不喜欢它。那么防止 ajax 调用缓存的正确方法是什么?

Ajax 调用在防止缓存方面不起作用:

$.getJSON("myURL", {
        json : jsonDataObject,
        cache: false
    }).success(function(data) {                 
        //do something with data
});  

我也尝试过打电话$.ajaxSetup({ cache: false });在通话发生之前,它自己,但没有效果......


首先,你认为你的设置方式cache在你的虚假$.getJSON()调用不正确。您将键/值对传递给服务器,因此请求 URL 将如下所示site.com/resource?cache=false.

您需要使用以下方式提出请求$.ajax() http://api.jquery.com/jquery.ajax/方法,这样你就可以实际设置cache选项false。然而,这一切所做的就是所谓的“快速修复黑客”。它添加了_={current_timestamp}到查询字符串,以便请求不会被缓存。

$.ajax({
    url: 'myurl',
    type: 'GET',
    dataType: 'json',
    data: jsonDataObject,
    cache: false, // Appends _={timestamp} to the request query string
    success: function(data) {
        // data is a json object.
    }
});

在我看来,这不是快速修复或黑客攻击,而是确保您从服务器获得最新响应的正确方法。

如果您不想每次都这样做,那么您可以使用自己的包装函数:

$.getJSONUncached = function (url, data, successCallback) {
    return $.ajax({
        url: url,
        type: 'GET',
        dataType: 'json',
        data: data,
        cache: false, // Appends _={timestamp} to the request query string
        success: successCallback
    });
};

然后你可以将你的呼叫替换为$.getJSON() with $.getJSONUncached()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

防止 ajax 调用缓存的正确方法是什么? 的相关文章

随机推荐

  • 虚函数和vtable是如何实现的?

    我们都知道C 中什么是虚函数 但是深层次上它们是如何实现的呢 vtable可以在运行时修改甚至直接访问吗 vtable 是针对所有类都存在 还是只针对那些至少具有一个虚函数的类 抽象类是否至少有一个条目的函数指针为 NULL 使用单个虚函数
  • 使用aiogram创建后台进程

    我正在尝试在我正在开发的使用 aiogram 的电报机器人中发送加密货币的价格警报 我遇到的问题是 我不确定如何启动一个函数作为后台 非阻塞线程 然后继续启动调度程序 我知道如何使用标准同步电报机器人来做到这一点 但我对我应该用 aiogr
  • 如何本地化 UserControl

    我正在开发一个必须支持多种语言的Windows应用程序 我已经关注了下面的文章http msdn microsoft com en us library y99d1cd3 v vs 71 aspx http msdn microsoft c
  • 不清楚如何实现依赖注入

    假设我有一个 LoginView 及其数据上下文 LoginViewModel 需要注入一个可以根据用户名 密码对用户进行身份验证的服务 现在假设应用程序的状态是有人已经登录 但现在他们正在注销 我需要为下一个用户重新显示登录屏幕 所以此时
  • NodeJs require('./file.js') 问题

    我遇到了一些问题 包括要在 NodeJs 项目中执行的文件 我在同一目录中有两个文件 a js var test Hello World and b js require a js console log test 我执行 b jsnode
  • 使用 Chart.js 绘制重叠条形图

    我想开发一个如下所示的条形图 可以使用chart js来开发吗 是的 这是可能的 请参阅 Github 上此线程中的示例https github com chartjs Chart js issues 5224 https github c
  • 如何在不创建变量或指针或使用数据类型的 sizeof 的情况下找到数据类型的大小?

    下图是一道面试题 Q 你被给定 有一个数据类型 比如 C 中的 X 要求是获取数据类型的大小 而不声明 变量或该类型的指针变量 当然 不使用 sizeof 运算符 我不确定这个问题是否已经被问过 感谢致敬 麦迪 定义 sizeof type
  • pyspark/EMR 中大型 DataFrame 上的collect() 或 toPandas()

    我有一个由一台机器 c3 8xlarge 组成的 EMR 集群 在阅读了一些资源后 我了解到我必须允许相当数量的堆外内存 因为我使用的是 pyspark 因此我已按如下方式配置集群 执行人一名 火花 执行器 内存 6g Spark exec
  • 我可以在同一台计算机上安装 .Net Framework 和 .Net Core 吗?

    将它们安装在同一台机器上时是否有任何限制或需要注意的事项 NET Framework 安装是计算机全局的 例如如果将计算机从 NET Framework 4 5 2 更新到 NET Framework 4 6 all计算机上的 NET Fr
  • 使用 Response.BinaryWrite 和 Server.Mappath 将文件下载到特定位置可能吗?

    我有与数据库中的文件关联的 varbinary 数据 这是我用来在单击链接时下载此文件的代码 a is my attachment object var r context Response r AddHeader Content Disp
  • Retrofit & OkHttp - 是否可以一次只发送一个请求?

    我正在使用 Retrofit 2 4 0 向服务器发送请求 但有时 如果我的请求与另一个请求具有相似的时间戳 以毫秒为单位 服务器会阻止我的请求 我需要一次发送一个请求 请求 A 已发送 请求 B 等待 直到收到请求 A 的响应 请求 A
  • 如何在没有 npm require 的情况下使用 ReactRouter CDN 方式?

    我是反应新手 我通过直接添加react js和react dom js文件以及browser min js来使用它来进行javascript转换到我的HTML页面中进行练习 现在 我想使用react router 我已经添加了ReactRo
  • iOS 上有触摸画线的 SDK 吗?

    有没有一个框架可以用来通过触摸画线 基本上 我想为客户添加在 iPad iPhone 上签名并将其捕获为图像的功能 非常感谢任何帮助 Thanks 您可以使用UIKIT框架中提供的核心图形来满足您的要求 我在我的应用程序中有类似的要求 但用
  • 在 K 均值算法 (MATLAB) 中使用绝对皮尔逊相关性作为距离

    我需要使用相关距离进行一些聚类 但我需要绝对皮尔逊距离 而不是使用定义为 d 1 r 的内置 距离 相关 在我的应用程序中 反相关数据应该获得相同的集群 ID 现在 当使用 kmeans 函数时 我得到的质心高度反相关 我希望通过组合它们来
  • iTextSharp - 将 word doc/docx 转换为 pdf

    我知道 iTextSharp 可用于将文档转换为 pdf 但首先我们必须使用 iTextSharp text Document 从头开始 创建一个文档 然后向该文档添加元素 如果我有一个现有的 doc 文件 是否可以使用 iTextShar
  • 如何以编程方式获取 Apple Watch 唯一 id 或 UUID 或序列号?

    我想在 Apple Watch 中以编程方式读取任何唯一信息 例如 UDID 或序列号 有什么办法可以得到吗 我想以编程方式而不是通过 xcode 手动获取 WatchOS3没有任何UIDevice 类似 API 来获得平衡identifi
  • 如何根据分页查找id

    我正在使用jQuery 数据表插件 http www datatables net 在 JSF 上
  • Chrome 扩展“Script-src”错误(自学)[重复]

    这个问题在这里已经有答案了 我在学校学习 C 后正在自学 JavaScript 我认为尝试构建 Chrome 扩展将是一个很好的实践 我正在尝试访问 OpenWeatherMap 的 API 来获取城市 ID 来进行天气搜索 这是导致问题的
  • 方法重载和原始类型如何工作?

    我正在做 Java 课练习 我有这段代码 其中包含一个重载方法 class A Overloaded method public void f int n float x System out println f int n float x
  • 防止 ajax 调用缓存的正确方法是什么?

    我有一个 AJAX 调用 它根据简单的标准参数 例如一年中的月份 从不断变化的数据库返回值 在 IE 中 此函数返回缓存的数据 但它不应该返回 我已经监控了服务器端 并且客户端没有联系它 现在 我的标题问题已经以不同的方式被问过 已经在这里