閱讀533 返回首頁    go 阿裏雲 go 技術社區[雲棲]


setInterval與ajax——ajax的緩存問題

             

在對ajax進行serInterval操作的時候一定要在請求地址後麵加上時間戳。

因為在短時間訪問同一個URL,會訪問緩存。

 

var interval = window.setInterval(function () {
      $.get("../Ajax/CalculateTime.aspx?time=" + new Date().getMilliseconds(),

          {  aid: aid },

          function (data, status) {
          ...............................................

         })
      }, 1000);

 

轉載了一個ajax緩存的問題的文章

最近做項目,一直碰到緩存的問題。一些小技巧和大家分享一下。因為基本要求是做到IE和火狐瀏覽器兼容,一直用火狐測試,沒發現緩存的問題,到IE裏麵出現了緩存的問題。
       

 如果是直接用jQuery裏的$.ajax()方法的話,如果要去除緩存很簡單,隻要配置一下緩存屬性cache為false,但是如果想要簡單寫法 getJSON(),那麼去除緩存就不能通過配置來解決了。因為getJSON根本沒有這個緩存屬性讓你來配置。因為如果其調用的地址URL和之前的一樣的話,回調函數會直接在緩存裏麵讀取數據,而不是進後台調用相應的方法。
       

知道了原因,解決方法就是讓他的每次請求的URL地址不一樣就行,但是同時又要不影響請求的服務所需要的數據,那麼可以有一下幾種方法:
       

1、$.getJSON("URL?t="+new Date(),function(json){});就是原有的URL基礎上加一個時間變量,每次的請求地址就不一樣了。
       

2、$.getJSON("URL?rand="+Math.random,function(json){});就是原有的URL基礎上加上一個隨機變量,不過這個方法有風險,萬一隨機數一樣。。。。。。
       

3、第三種方法就是自己定義一個遞增變量,在URL後麵加上這個遞增變量,每次請求完後,就遞增一下。
       

$.get()去除緩存的方法和$.getJSON()相同

 

參考博客:https://user.qzone.qq.com/935937284/blog/1329985097

最後更新:2017-04-02 22:16:28

  上一篇:go Android讀取SIM聯係人信息
  下一篇:go android 文本框實現搜索和清空效果