首頁  >  文章  >  後端開發  >  Ajax快取處理

Ajax快取處理

巴扎黑
巴扎黑原創
2016-11-29 11:48:481364瀏覽

Ajax中請求被快取的問題 

在Ajax開發中,會遇到瀏覽器快取內容的問題,例如,某個元素註冊了滑鼠事件(onmouseover),事件觸發後會透過xmlhttprequest到伺服器取得內容,在在不刷新頁面的情況下,瀏覽器會快取第一次要求的內容,服務端更新後瀏覽器仍然顯示第一次的內容。 

通常,這種請求都是xmlhttprequest發起的GET請求。根據 HTTP 規範,GET 用於資訊獲取,而且應該是冪等的。也就是說,當使用相同的URL重複GET請求會傳回預期的相同結果時,GET方法才是適用的。當對一個請求有副作用的時候(例如,提交資料註冊新使用者時),應該使用POST請求而不是GET。所以瀏覽器會對GET請求做快取處理。 

解決方法: 

一. GET請求URL後附加字串,讓伺服器認為不是相同的請求。

例"http://www.example.com/index.php?class=aitcle&page=5&_t=" + new Date().getTime() 

二. 在ajax發送請求前加上xmlHttpRequest.setRequestHeader(" If-Modified-Since","0") 

三. 在ajax發送請求前加上xmlHttpRequest.setRequestHeader("Cache-Control","no-cache"); 

四. 服務端回應請求時加上header ("Cache-Control: no-cache, must-revalidate"); (PHP) 

五. 使用POST取代GET,瀏覽器不會對POST做快取

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn