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
- 前後端頁面分離導致session無法正常獲取的問題後端Session
- 【epoll問題】EPOLLRDHUP使用導致無法接受資料
- 解決ajax請求引數過多導致引數被截斷的問題
- HTTP 請求中 Token 引數帶引號導致後臺無法識別問題HTTP
- win10無法更新1803怎麼辦?顯示卡導致無法更新1803的解決方法Win10
- 利用LRU策略實現Axios請求快取iOS快取
- win10系統下安裝一些更新時出現問題導致無法正常更新如何解決Win10
- 應用使用JNDI,資料庫無法連線,導致的程序無法啟動問題處理資料庫
- DevExpress 的LayoutControl控制元件導致資源無法釋放的問題處理devExpress控制元件
- victoriaMetrics無法獲取抓取target的問題
- nfs導致的作業系統目錄無法訪問NFS作業系統
- 解決 jquery使用ajax請求發生跨域問題的辦法jQuery跨域
- ajax的post或者get伺服器請求伺服器
- 一次ajax請求導致status為canceled的原因小記求導
- 懷疑私網網路卡多播問題導致crs無法正常啟動
- Linux 作業系統指令碼格式問題導致指令碼無法執行Linux作業系統指令碼
- Chrome89針對sessionStorage的更新導致資料共享問題ChromeSession
- ANALYZE導致的阻塞問題分析
- 【linux】【docker】Docker預設網段配置導致無法訪問LinuxDocker
- 使用axios post 請求資料無法提交的問題iOS
- ant design 中,使用dva/fetch 設定導致無法從後臺匯出excel的問題Excel
- 如何處理快取導致的無效曝光快取
- wpf popup導致MouseLeftButtonUp無法觸發
- 由於無法分配ip而導致的FailedCreatePodSandBoxAI
- Oracle資料傾斜導致的問題-無繫結變數Oracle變數
- Electron安裝過程深入解析(讀完此文解決Electron安裝失敗導致的無法啟動,無法打包的問題)
- 在settings加入AUTHENTICATION_BACKENDS設定導致root使用者無法登入問題
- 重置資料庫密碼後導致網站無法訪問資料庫密碼網站
- 相親交友原始碼開發,前端API如何請求快取?原始碼前端API快取
- csrf解決Ajax請求跨站問題
- Laravel artisan 寫入日誌的使用者和 fpm 不一致,導致無法寫入日誌問題Laravel
- ajax 請求的時候 get 和 post 方式的區別?
- 由Nginx的DNS快取導致的訪問404NginxDNS快取
- MySQL時區導致無法產生表MySql
- oracle兩節點RAC,由於gipc導致某節點crs無法啟動問題分析Oracle
- 解決go get 下載github專案慢或無法下載的問題!GoGithub
- golang slice使用不慎導致的問題Golang