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做緩存
轉自 http://yanglei008.javaeye.com/blog/222401
posted on 2011-03-14 15:34
wawlian 閱讀(395)
評論(0) 編輯 收藏 所屬分類:
Ajax