【问题标题】:How to prevent caching from jQuery Ajax?如何防止来自 jQuery Ajax 的缓存?
【发布时间】:2013-06-06 09:28:40
【问题描述】:

谁能帮我解决这个问题?我有一个使用 .manifest 进行离线存储缓存的网页。在该页面中,我使用 jQuery ajax 调用从服务器获取数据。如果我首先加载页面,就可以了。我可以在线和离线之间切换。但问题是当我重新上线并刷新页面时。 jQuery ajax 不能再与服务器通信了。有没有办法让 ajax 与服务器通信或清除离线缓存?

我的 ajax 调用是这样的:

        $.ajax({

            type: "GET",

            url: requestUrl,
            success: localSuccess,

            error: error,

            dataType: "text",
            cache:false
        });

【问题讨论】:

  • 我一头雾水,既然无法访问服务器,为什么还要清除离线缓存?
  • Kerry,我不想清除离线缓存。我只想将我的本地存储(HTML5 功能)与服务器同步。但如果我允许离线缓存,我将无法进行同步。没有那个缓存,它工作正常。

标签: jquery ajax caching


【解决方案1】:

我在每个页面/母版页的顶部都有这段代码

    //Disable caching in IE, becuase it's EVIL!
    $(document).ready(function () {
        $.ajaxSetup({ cache: false });
    });

【讨论】:

  • 我刚刚写了这个,但推迟了发布,因为 'cache:false' 已经作为给定示例中的最后一个设置传递。
  • 谢谢,阿拉斯泰尔。但我仍然无法连接到服务器。 :(。我现在想知道这是否与浏览器缓存有关。
  • @cynwong:糟糕,在 ajax 调用中没有看到 cache:false。那么我的代码将无济于事。关于在线/离线之间的决定,您能否提供更多详细信息/更多 javascript。我有点困惑。
  • Alastair,我正在使用 navigator.onLine 检测在线/离线。我正在使用 HTML5 localStorage 功能。我想在它在线时同步。因此,在离线时,用户仍然可以访问数据并根据需要进行修改。
【解决方案2】:

将随机字符串放入 url 中,如 "get.php?random="+Math.random()" 可以解决这个问题。这不是最好的解决方案,但效果很好。

【讨论】:

    【解决方案3】:

    我知道我参加这个聚会很晚了,但我只是把它放在那里。我很抱歉从僵尸之地复活这个问题。 在 safari 和一些较旧的浏览器中,(从我到现在的经验来看,cache:false 有时似乎不起作用)。对于更跨浏览器兼容的解决方案,您可以在 ajax() 调用中添加一个数据选项,并添加一个随机数生成器作为参数。应该是这样的。

     var callback = function () {
       $.ajax({
          type: "GET",
          url: requestUrl,
          success: localSuccess,
          error: error,
          dataType: "text",
    
          //won't work sometimes
          cache:false,
    
          //start random number generator
          data : { r: Math.random() }
         //end random number generator
       });
      }
    

    这样,每次服务器调用都会产生一个新的随机数,并且由于数据与之前的请求不同,ajax请求不会被缓存,并确保每次都有新的服务器调用。而在你的服务器中,你可以忽略这个变量r

    【讨论】:

      猜你喜欢
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 2011-05-17
      • 2013-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多