1. 程式人生 > 實用技巧 >關於IE下的頁面快取和Ajax請求問題

關於IE下的頁面快取和Ajax請求問題

ASP.NET幾種清除頁面快取的方法
在asp.net中使用模式dialog時,你會發現每次開啟的頁面都是相同的內容,頁面內容並沒有重新整理,這是快取的原因造成的,

解決方法如下:
第一種是ASP.NET清除頁面快取

            Response.Buffer = true;
            Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds(-1);
            Response.Expires = 0;
            Response.CacheControl = "no-cache";
            Response.AddHeader("Pragma", "No-Cache");

第二種是HTML方法

        <HEAD>
        <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
        <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
        <META HTTP-EQUIV="Expires" CONTENT="0">
        </HEAD>   

第三種是在頁面中禁用快取
在web開發中合理使用快取可以有效的提高網站的效能,但是在某些場合下因為快取的存在會帶來很多的問題。
例如:因為快取的存在會造成重複提交資料的問題,驗證碼圖片不能正確顯示的問題,等等。這個時候我們就要禁用頁面快取的功能。
我們常用的做法是傳送一個“no-cache”的指令,但是實際使用過程中我們發現,這個指令對IE是有效的,但是對Firefox卻沒有效,這是因為,使用該指令Firefox不快取HTTPS pages 但是還是會快取HTTP pages ,這是Firefox的一個BUG,解決的辦法很簡單,就是使用no-store代替no-cache,同時傳送no-store和no-cache指令
ASP.net中的處理方法,在不需要快取的頁面中新增如下程式碼

      Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
      Response.Cache.SetNoStore();

在IE下若發現ajax請求不到後臺解決方法:
在原URL後加上一個隨機數,讓每次請求的URl都不相同就行。
如:

var urlChange = "原url"+"&"+Math.random();
$.ajax({
      url: urlChange,
      type: 'get',
      async: true,
      dataType: 'json',
      success: function (data) {
            //doSomething...
          }
      }
  });

轉自:https://www.cnblogs.com/JuneZhang/archive/2010/11/23/1885538.html