【问题标题】:Ajax call caching in Firefox after going back in history回顾历史后,Firefox 中的 Ajax 调用缓存
【发布时间】:2023-03-11 22:23:01
【问题描述】:

我正在使用 ajax 调用来调用 php 脚本,该脚本通过睡眠等待 40 秒,然后输出 RELOAD。在 JavaScript 中,检查输出是否为RELOAD,如果是,则再次开始调用。

这在我使用的每个页面上都很好用。但在 Firefox 中,在特定情况下存在一个问题。

我在执行这些调用的这个页面上,然后我点击一个链接进入另一个页面。之后,我通过单击历史记录(后退)按钮返回。在这种情况下,调用确实开始了,但 Firefox 似乎已经缓存了结果并立即输出RELOAD。这导致调用只需几毫秒即可加载,并且我没有得到任何实际内容。它甚至没有连接到服务器(我更改了 php 文件,而 ajax 调用继续进行,但没有任何效果)。

所以 Firefox 似乎在您使用后退按钮(或javascript:history.back())的情况下使用缓存输出。如果我正常加载页面(通过链接或在地址栏中输入 url),调用确实会正确到达服务器并获取实际内容。

有没有办法可以从 PHP 或 JavaScript 覆盖这种行为?我正在使用jQuery.ajax(),并且设置了“cache:false”选项。

感谢您的帮助!

【问题讨论】:

  • 缓存破坏,$.ajax({... cache:false, ...});.
  • 编辑:这个选项我已经设置了,忘了说。
  • 您是否尝试过一些简单的方法,例如在 URL 中添加一个具有递增值的参数,以便每次 URL 都不同?
  • 听起来你想让$(document).ready() 触发history.back()。检查stackoverflow.com/questions/158319/…stackoverflow.com/questions/158319/…
  • 这实际上是我会使用的最后一个解决方案,因为这根本不是很好的编程。

标签: javascript ajax firefox


【解决方案1】:

我刚刚通过在 URL 中添加一个随机数来解决它。这个解决方案确实有效,但它根本不是一个非常漂亮的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-30
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 2011-02-07
    相关资源
    最近更新 更多