Ajax緩衝處理

來源:互聯網
上載者:User
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做緩衝
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.