ajax的get請求快取導致無法更新問題
當使用get方式進行url請求的時候,可能會出現這樣的現象。
那就是資料無法更新,而是從快取中讀取老舊的資料,這種現象一般出現在IE瀏覽器中。
程式碼例項:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> function loadXMLDoc() { var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.getElementById("show").innerHTML = xmlhttp.responseText; } } xmlhttp.open("GET", "demo/ajax/net/demo.aspx", true); xmlhttp.send(); } window.onload = function () { var obt = document.getElementById("bt"); obt.onclick = function () { loadXMLDoc(); } } </script> </head> <body> <div> <div id="show"></div> <input id="bt" type="button" value="檢視效果"/> </div> </body> </html>
上面程式碼的功能是點選一下按鈕獲取一次伺服器的當前時間,但是在IE瀏覽器下會出現問題,那就是隻有第一次是正常的,其他時候的操作會從快取中讀取資料,而不是實時獲取。
解決方案如下:
解決方案一:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> function loadXMLDoc() { var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function () { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { document.getElementById("show").innerHTML = xmlhttp.responseText; } } xmlhttp.open("GET", "demo/ajax/net/demo.aspx?rnd="+Math.random(), true); xmlhttp.send(); } window.onload = function () { var obt = document.getElementById("bt"); obt.onclick = function () { loadXMLDoc(); } } </script> </head> <body> <div> <div id="show"></div> <input id="bt" type="button" value="檢視效果"/> </div> </body> </html>
上面的方式就是為url請求新增隨機數,這樣就會實時讀取伺服器內容,而不是從快取中讀取。
解決方案二:
可以在後臺程式碼中進行相關設定,以c#程式碼為例子:
[C#] 純文字檢視 複製程式碼Response.Buffer = true; Response.ExpiresAbsolute = DateTime.Now.AddDays(-1); Response.Cache.SetExpires(DateTime.Now.AddDays(-1)); Response.Expires = 0; Response.CacheControl = "no-cache"; Response.Cache.SetNoStore();
相關文章
- 因為跨域問題導致的無法讀取 response header跨域Header
- 如何解決非同步介面請求快慢不均導致的資料錯誤問題? - DevUI非同步devUI
- ajax資料無法更新問題原因及解決
- jquery ajax請教的快取問題jQuery快取
- 前後端頁面分離導致session無法正常獲取的問題後端Session
- 【epoll問題】EPOLLRDHUP使用導致無法接受資料
- 歸檔問題導致的資料庫無法啟動資料庫
- 解決hyper v導致docker無法啟動問題Docker
- 字元校驗集問題導致索引無法正常使用字元索引
- DES加密後get獲取url引數無法解密問題加密解密
- NSURLCache 網路請求快取指南快取
- jdk版本導致tomcat,eclipse無法啟動的問題JDKTomcatEclipse
- Kubernetes node的防火牆問題導致pod ip無法訪問防火牆
- 修改計算機名後導致Oracle無法訪問的問題修復計算機Oracle
- Linux下共享庫問題導致無法啟動SQLPLUS的問題解決LinuxSQL
- win10系統下安裝一些更新時出現問題導致無法正常更新如何解決Win10
- 應用使用JNDI,資料庫無法連線,導致的程序無法啟動問題處理資料庫
- iOS 網路請求快取:NSURLCache詳解iOS快取
- iOS網路請求快取:NSURLCache詳解iOS快取
- nfs導致的作業系統目錄無法訪問NFS作業系統
- 資料庫統計資訊不更新導致的效能問題資料庫
- 利用LRU策略實現Axios請求快取iOS快取
- memory_target設定不當導致資料庫無法啟動的問題資料庫
- 多個物化檢視導致物化日誌無法及時更新
- HTML的input型別為hidden導致無法reset改欄位的value問題HTML型別
- Workstation服務無法啟動導致無法訪問檔案伺服器伺服器
- win10無法更新1803怎麼辦?顯示卡導致無法更新1803的解決方法Win10
- ChromeHSTS異常導致無法訪問HTTPS網頁ChromeHTTP網頁
- victoriaMetrics無法獲取抓取target的問題
- 懷疑私網網路卡多播問題導致crs無法正常啟動
- AJAX的POST和GET請求的區別
- Chrome89針對sessionStorage的更新導致資料共享問題ChromeSession
- 一次ajax請求導致status為canceled的原因小記求導
- 解決 jquery使用ajax請求發生跨域問題的辦法jQuery跨域
- ajax的post或者get伺服器請求伺服器
- ANALYZE導致的阻塞問題分析
- MySQL Flush導致的等待問題MySql
- android sdk manager網路問題無法更新Android