GET請求緩存問題及解決方案


一、遇到的問題

最近在項目中遇到一個問題:由公司內網訪問系統執行某一操作時,瀏覽器正確發送請求(服務端代碼有打印日志),但使用公司外網執行形同操作,服務端未打印日志(請求並未到達服務端),瀏覽器卻顯示已發送請求,且返回了數據(但數據中的業務數據為空)。

初步判斷應該是與外網有關,於是找到運維人員幫忙在服務器上抓包,結果發現外網的請求並未到達服務端,看來該問題應該是前端原因導致。

查看前端發起請求的代碼,發現該請求是GET請求,查找資料后才知道:原來GET請求在有些瀏覽器中會緩存,再次請求時,瀏覽器不會發送請求,而是使用上次請求獲取到的結果。

 

二、jQuery解決方案如下:

 $.ajax({
      url: '/outer/cert/extension/getLatestCertOperInfo',
      type: 'get',
      dataType: 'json',
      async: false,
      cache: false,
      success: function (data) {

      }
});

將cache設置為false。它的工作原理是在GET請求參數中附加時間戳"_={timestamp}"

 

注:也曾看到通過隨機數形式解決Ajax中的緩存問題的方案,但是這種解決方案並不是特別可靠。因為隨機數也有相同的情況。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM