Ajax キャッシュ

巴扎黑
巴扎黑オリジナル
2016-11-29 11:48:481400ブラウズ

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 をキャッシュしません

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。