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 サイトの他の関連記事を参照してください。