解決ajax中ie快取問題(手動新增時間戳)
本章講解的是ajax的ie快取
ie瀏覽器對ajax請求的的結果進行快取,這會導致ie瀏覽器ajax請求的的結果(最新返回結果)顯示失敗,因為它調取了舊的快取。
1.建立在testsix資料夾
並在這個資料夾裡面
2.建立iecache.html檔案
3.建立server.js檔案
案例一
未新增解決方法
iecache.html檔案
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button>點選獲取資訊</button>
<div id="result" style="width: 300px;height: 200px;border: solid 2px teal;"></div>
<script>
// 一:獲取元素物件
const texttwo = document.getElementsByTagName('button')[0];
//
const result = document.querySelector('#result');
//
texttwo.addEventListener('click', function(){
console.log('點選傳送測試成功.')
// 1.傳送請求
const textone = new XMLHttpRequest();
//
// 自動轉化
// 藉助textone物件裡面的屬性來轉化
// 設定響應體資料的型別
textone.responseType = 'json';
// 2.初始化
textone.open('GET','http://127.0.0.1:8000/ie');
// 3.傳送
textone.send();
// 4.事件繫結
textone.onreadystatechange = function(){
if(textone.readyState === 4){
if(textone.status >= 200 && textone.status < 300){
// 測試列印
console.log(textone.response);
// 使用自動轉化
result.innerHTML = textone.response.name;
}
}
}
});
</script>
</body>
</html>
server.js檔案
// 1. 引入express
const express = require('express');
// 2.建立物件
const app = express();
// 3.建立路由規則 裡面的形參 request與response (自己可以隨便定義名字的)
// 建議寫成 request與response 因為可以見名思意,方便自己看
// request 對請求報文的封裝
// responst 對響應報文的封裝
// 請求路徑為'/server'
// 當使用post請求時候會因為傳送的資訊沒有收到對應的結果所以回報錯
// 所以該處使用all 表示可以接收任意型別的請求 如get post 等等
app.get('/ie', (request, response)=>{
// 設定響應頭 設定允許跨域
// 頭名字為Access-Control-Allow-Origin
// 頭的值為
response.setHeader('Access-Control-Allow-Origin','*');
// 響應頭 *號表示所有的頭資訊都可以接收
response.setHeader('Access-Control-Allow-Headers','*');
// 響應一個資料 把這個物件返回給瀏覽器
const data = {
name: 'HELLO IE'
};
// 對物件進行字串轉換
let str = JSON.stringify(data);
// 設定響應體
response.send(str);
});
// 4. 監聽埠啟動服務
// 這裡listen(8000)後面新增了一個回撥,用來提示,告訴自己是否監聽成功
app.listen(8000, ()=>{
console.log("服務已經啟動,8000埠監聽中......");
});
案例二
在url裡面新增+Date.now()
textone.open('GET','http://127.0.0.1:8000/ie?t='+Date.now());
這樣會在訪問的時候新增一個時間戳
那麼每次訪問獲取的時間戳都是不一樣的
那麼瀏覽器就會認為你這裡是兩次不同的請求
一般情況下我們不需要自己去新增這個,會有工具自動把這個新增上去。
js
這邊沒有修改
修改的只是html,完整的是
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button>點選獲取資訊</button>
<div id="result" style="width: 300px;height: 200px;border: solid 2px teal;"></div>
<script>
// 一:獲取元素物件
const texttwo = document.getElementsByTagName('button')[0];
//
const result = document.querySelector('#result');
//
texttwo.addEventListener('click', function(){
console.log('點選傳送測試成功.')
// 1.傳送請求
const textone = new XMLHttpRequest();
//
// 自動轉化
// 藉助textone物件裡面的屬性來轉化
// 設定響應體資料的型別
textone.responseType = 'json';
// 2.初始化
textone.open('GET','http://127.0.0.1:8000/ie?t='+Date.now());
// 3.傳送
textone.send();
// 4.事件繫結
textone.onreadystatechange = function(){
if(textone.readyState === 4){
if(textone.status >= 200 && textone.status < 300){
// 測試列印
console.log(textone.response);
// 使用自動轉化
result.innerHTML = textone.response.name;
}
}
}
});
</script>
</body>
</html>
對比圖
url後面多了t=時間戳
,並且查詢字串引數
多了t=時間戳
相關文章
- JQuery中ajax的使用與快取問題的解決方法jQuery快取
- 獲取時間戳,幾個時間點的時間戳時間戳
- 32 位 PHP 時間戳問題PHP時間戳
- 快取問題(四) 快取穿透、快取雪崩、快取併發 解決案例快取穿透
- 程式碼解決快取穿透和快取雪崩問題快取穿透
- 倒數計時快取時間問題總結快取
- 快取穿透問題與解決方法快取穿透
- C#、IIS獲取時間帶星期問題解決C#
- 快取世界中的三大問題及解決方案快取
- 快取三大問題及解決方案快取
- 快取常見問題及解決方案快取
- VNPY2 中凌晨0點時間戳的處理問題,和夜盤資料時間戳分析時間戳
- 針對ie、safari瀏覽器時間格式化NAN問題解決方法瀏覽器NaN
- c++ 獲取當前時間周初凌晨時間戳(獲取當前時間週一凌晨時間戳)C++時間戳
- IE瀏覽器關於ajax的快取機制瀏覽器快取
- 解決ie相容性問題
- Elasticsearch為記錄新增時間戳timestampElasticsearch時間戳
- 手摸手教你解決重定向快取問題快取
- redis快取相關問題及解決方案Redis快取
- LINUX 解決時間同步問題(NTP)Linux
- js獲取當天時間戳JS時間戳
- Laravel 獲取 13 位時間戳Laravel時間戳
- c/c++獲取時間戳C++時間戳
- 低開銷獲取時間戳時間戳
- Excel中時間戳轉換時間Excel時間戳
- Java 給PDF簽名時新增可信時間戳Java時間戳
- unbound中快取時間邏輯快取
- gulp外掛解決瀏覽器快取問題瀏覽器快取
- 前端使用 gulp 解決多專案快取問題前端快取
- 布隆過濾器解決快取穿透問題過濾器快取穿透
- 如何解決快取失效問題快取
- PostgreSQL自動更新時間戳SQL時間戳
- spring mvc解決ajax跨域問題SpringMVC跨域
- 獲取Unix 時間戳帶上毫秒時間戳
- 常見的Javascript獲取時間戳JavaScript時間戳
- 解決MongoDB儲存時間時差的問題MongoDB
- 優雅的快取解決方案--設定過期時間快取
- MySQL時間戳、時間MySql時間戳