ホームページ >ウェブフロントエンド >jsチュートリアル >「no-cache」ヘッダーがあるにもかかわらず、iOS 6 Safari が $.ajax 呼び出しをキャッシュするのはなぜですか?

「no-cache」ヘッダーがあるにもかかわらず、iOS 6 Safari が $.ajax 呼び出しをキャッシュするのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-05 04:18:02581ブラウズ

Why Does iOS 6 Safari Cache My $.ajax Calls Even With `no-cache` Headers?

iOS 6 Safari: $.ajax 呼び出しのキャッシュ

iOS 6 の Safari の Web ビューでは、$.ajax 呼び出しがキャッシュされていることが確認されています。そうでないことが明示的に指定されている場合。この奇妙な動作は、Safari WebView を利用する PhoneGap アプリケーションのコンテキストで発生しました。

キャッシュの問題の原因

調査により、Safari は次のような POST リクエストをキャッシュしていることが判明しました。 Cache-Control ヘッダーがないか、ヘッダー「Cache-Control: max-age=0」が含まれています。この動作は、POST 応答を適切なヘッダーでキャッシュできると規定されている HTTP 仕様の解釈に由来します。

解決策

キャッシュを防ぐには、Cache-Control が必要です。ヘッダーは「no-cache」に設定する必要があります。これは、

Header set Cache-Control "no-cache"

を使用して Apache 構成でグローバルに実現できます。特に POST リクエストの場合、次を使用して同じ設定を適用できます。

SetEnvIf Request_Method "POST" IS_POST
Header set Cache-Control "no-cache" env=IS_POST

または、回避策は次のとおりです。関数シグネチャの変更:

getNewRecordID(intRecordType, strTimestamp)

関数シグネチャにタイムスタンプ パラメータを追加すると、リクエストは呼び出しごとに効果的に変更され、キャッシュが防止されます。

以上が「no-cache」ヘッダーがあるにもかかわらず、iOS 6 Safari が $.ajax 呼び出しをキャッシュするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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