Ajax のキャッシュされたリクエストの問題
Ajax 開発では、たとえば、特定の要素がマウス イベント (onmouseover) を登録すると、そのイベントがトリガーされた後にコンテンツが取得されるという問題が発生します。ページを更新せずに、ブラウザは、サーバーが更新された後も、最初に要求されたコンテンツをキャッシュします。
通常、この種のリクエストは、xmlhttprequest によって開始される GET リクエストです。 HTTP 仕様によれば、GET は情報の取得に使用され、冪等である必要があります。つまり、同じ URL を使用して GET リクエストを繰り返しても、期待される同じ結果が返される場合、GET メソッドは適切です。リクエストに副作用がある場合 (たとえば、新しいユーザーを登録するためにデータを送信する場合)、GET の代わりに POST リクエストを使用する必要があります。したがって、ブラウザは GET リクエストをキャッシュします。
解決策:
1. GET リクエスト URL の後に文字列を追加して、サーバーに同じリクエストではないと認識させます。
例 "http://www.example.com/index.php?class=aitcle&page=5&_t=" + new Date().getTime()
2. ajax リクエストを送信する前に xmlHttpRequest.setRequestHeader(" を追加する) -Modified-Since","0")
3. Ajax リクエストを送信する前に xmlHttpRequest.setRequestHeader("Cache-Control","no-cache"); を追加します
4. サーバーがリクエストに応答するときにヘッダーを追加します("Cache-Control: no-cache, must-revalidate"); (PHP)
5. GET の代わりに POST を使用すると、ブラウザは POST をキャッシュしません