日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

IE浏览器缓存第二次请求的解决方案

發(fā)布時(shí)間:2024/1/8 HTML 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IE浏览器缓存第二次请求的解决方案 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前兩天在做pc端頁面的時(shí)候,一個(gè)頁面在IE瀏覽器上進(jìn)行自測(cè)的時(shí)候,發(fā)現(xiàn)當(dāng)?shù)诙我约爸笳?qǐng)求的參數(shù)和第一次請(qǐng)求的參數(shù)一致的時(shí)候,返回的數(shù)據(jù)都是一樣的,在后臺(tái)服務(wù)器上也沒有看到請(qǐng)求日志,而是使用第一次請(qǐng)求回來的數(shù)據(jù)返回給你。那要怎么解決這個(gè)問題呢?
目前我想到4種解決方案:

1、緩存問題只是針對(duì)get請(qǐng)求,所以可以把get請(qǐng)求改為post請(qǐng)求

2、在請(qǐng)求的url地址中加入時(shí)間戳或者隨機(jī)數(shù)
加入時(shí)間戳或者隨機(jī)數(shù)之后,這樣每次請(qǐng)求的地址都不一樣。

let url = url + '&time=' + new Date().getTime(); 或者 let url = url + '&number=' + Math.random();api.get(url)

3、在請(qǐng)求頭中設(shè)置Cache-Control: no-cache

XMLHttpRequest.setRequestHeader("Cache-Control","no-cache")

在后端響應(yīng)頭也要設(shè)置

header(“Cache-Control:no-cache,must-revalidate”);

可以參考一下這篇文章:web性能優(yōu)化之:no-cache與must-revalidate深入探究
4、在請(qǐng)求頭中設(shè)置If-Modified-Since:0

XMLHttpRequest.setRequestHeader('If-Modified-Since','0')

HTTP的請(qǐng)求頭標(biāo)簽 If-Modified-Since與Last-Modified

1.基本定義
Last-Modified 與If-Modified-Since 都是標(biāo)準(zhǔn)的HTTP請(qǐng)求頭標(biāo)簽,用于記錄頁面的最后修改時(shí)間。

2.發(fā)送方向
Last-Modified 是由服務(wù)器發(fā)送給客戶端的HTTP請(qǐng)求頭標(biāo)簽
If-Modified-Since 則是由客戶端發(fā)送給服務(wù)器的HTTP請(qǐng)求頭標(biāo)簽

3.應(yīng)用場(chǎng)景

  • Last-Modified 在瀏覽器第一次請(qǐng)求某一個(gè)URL時(shí),服務(wù)器端的返回狀態(tài)會(huì)是200,內(nèi)容是你請(qǐng)求的資源,同時(shí)有一個(gè)Last-Modified的屬性標(biāo)記此文件在服務(wù)期端最后被修改的時(shí)間,格式類似這樣:
    Last-Modified: Fri, 12 May 2006 18:53:33 GMT 后面跟的時(shí)間是服務(wù)器存儲(chǔ)的文件修改時(shí)間

  • If-Modified-Since 客戶端第二次請(qǐng)求此URL時(shí),根據(jù) HTTP 協(xié)議的規(guī)定,瀏覽器會(huì)向服務(wù)器傳送 If-Modified-Since 報(bào)頭,詢問該時(shí)間之后文件是否有被修改過:
    If-Modified-Since: Fri, 12 May 2006 18:53:33 GMT 后面跟的時(shí)間是本地瀏覽器存儲(chǔ)的文件修改時(shí)間

如果服務(wù)器端的資源沒有變化,則時(shí)間一致,自動(dòng)返回HTTP狀態(tài)碼304(Not Changed.)狀態(tài)碼,內(nèi)容為空,客戶端接到之后,就直接把本地緩存文件顯示到瀏覽器中,這樣就節(jié)省了傳輸數(shù)據(jù)量。

如果服務(wù)器端資源發(fā)生改變或者重啟服務(wù)器時(shí),時(shí)間不一致,就返回HTTP狀態(tài)碼200和新的文件內(nèi)容,客戶端接到之后,會(huì)丟棄舊文件,把新文件緩存起來,并顯示到瀏覽器中。

以上操作可以保證不向客戶端重復(fù)發(fā)出資源,也保證當(dāng)服務(wù)器有變化時(shí),客戶端能夠得到最新的資源。

關(guān)于If-Modified-Since與Last-Modified可以參考這篇文章鏈接地址

總結(jié)

以上是生活随笔為你收集整理的IE浏览器缓存第二次请求的解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。