ホームページ > 記事 > ウェブフロントエンド > iOS 6 の Safari が、cache=false であっても $.ajax POST リクエストをキャッシュするのはなぜですか?
iOS 6 での Safari の $.ajax キャッシュ結果: 分析
iOS 6 のリリース以来、Safari の Web ビュー キャッシュ $ に関する懸念が生じています。 .ajax 呼び出し。キャッシュ属性を明示的に「false」に設定しているにもかかわらず、特に同じ入力パラメータを一貫して受け取る静的関数シグネチャを持つ POST メソッドの場合、予期しないキャッシュ動作が継続します。
根本原因
調査により、iOS 6 の Safari は、Cache-Control ヘッダーがないか、「Cache-Control: max-age=0」を含む POST リクエストをキャッシュしていることが判明しました。これは、POST 応答の非キャッシュ性を尊重する他のブラウザとは異なります。
回避策
グローバルにキャッシュを防ぐ唯一の効果的な解決策は、「Cache-Control」を設定することです。 : キャッシュなし。」このヘッダーはキャッシュを明示的に禁止します。
例
Apache 構成
Apache でこの回避策を実装するには、構成ファイルに次の行を追加します:
Header set Cache-Control "no-cache"
または、この動作を POST リクエストのみに制限するには:
SetEnvIf Request_Method "POST" IS_POST Header set Cache-Control "no-cache" env=IS_POST
補足事項
キャッシュは、POST リクエストのパラメーターと URL が変更されていない場合にのみ発生することに注意してください。 URL または POST ペイロードにランダム データを導入すると、キャッシュの問題を回避できます。
以上がiOS 6 の Safari が、cache=false であっても $.ajax POST リクエストをキャッシュするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。