關於IE下的頁面快取和Ajax請求問題
阿新 • • 發佈:2020-07-15
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