ホームページ >ウェブフロントエンド >jsチュートリアル >キャッシュ制御設定にもかかわらず、iOS 6 で Safari が POST リクエストをキャッシュするのはなぜですか?

キャッシュ制御設定にもかかわらず、iOS 6 で Safari が POST リクエストをキャッシュするのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-09 16:22:02788ブラウズ

Why Does Safari Cache POST Requests in iOS 6 Despite Cache Control Settings?

iOS 6 の Safari キャッシュの難題

iOS 6 での Safari の導入により、$.ajax 呼び出しのキャッシュ処理に関する懸念が生じています。具体的には、キャッシュ プロパティを明示的に false に設定しているにもかかわらず、PhoneGap アプリケーション内で行われた POST リクエストがキャッシュされます。

根本原因

徹底的な調査の結果、次のことが判明しました。 Safari は、次の基準に基づいて POST を選択的にキャッシュします。

  • Cache-Control ヘッダーの欠如
  • 「Cache-Control: max-age=0」の存在および即時 " Expires" ヘッダー

HTTP 仕様に従って、POST 応答は通常キャッシュできません。ただし、iOS 6 の Safari は、適切な Cache-Control ヘッダーまたは Expires ヘッダーを使用してキャッシュを許可する規定を悪用しているようです。

回避策

Safari が POST をキャッシュしないようにするにはリクエストの場合、レスポンスヘッダーに「Cache-Control: no-cache」を設定する必要があります。これにより、Safari がキャッシュ バイパス ディレクティブを確実に遵守するようになります。

すべての POST に適用されるグローバル ソリューションの場合、サーバー設定に次のコードを追加します。

<code class="apache">Header set Cache-Control "no-cache"</code>

のみを無効にする場合は、特定の POST をキャッシュするには、次のコードを使用できます。

<code class="apache">SetEnvIf Request_Method "POST" IS_POST
Header set Cache-Control "no-cache" env=IS_POST</code>

注: リクエスト パラメーターが同じであれば、Safari は引き続き POST リクエストをキャッシュします。キャッシュを回避するには、呼び出しごとにリクエスト パラメータを変更します。あるいは、リクエスト URL または POST データにランダムなパラメータを追加して、一意性を確保することもできます。

以上がキャッシュ制御設定にもかかわらず、iOS 6 で Safari が POST リクエストをキャッシュするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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