7

重複の可能性:
iOS6のSafariは$.ajaxの結果をキャッシュしていますか?

PhoneGapAndroidとiOSで正常に動作するハイブリッドアプリケーションを使用しています。しかし、iOS 6でテストを開始したとき、ほとんどのajax呼び出しでサーバーデータを取得していないことに気付きました。代わりに、以前のajax呼び出しからキャッシュされたデータを取得していました。

これまで、キャッシュを無効にするために次のオプションを試しました-

  1. クエリ文字列パラメータとしてタイムスタンプを含める
  2. $.ajaxSetup({ cache: false });
  3. ajax呼び出しの内部no-cache = true
  4. $.ajaxPrefilter(function (options, originalOptions, jqXHR) { options.data = jQuery.param($.extend(originalOptions.data||{}, { timeStamp: new Date().getTime() })); });

しかし、これらはどれも機能していないようです。私はajax呼び出しからJavaアクションクラスを呼び出しています-それは上記のメソッドが失敗する理由と関係がありますか?

4

2 に答える 2

5

修正方法:リクエストのキャッシュを防ぐには、さまざまな方法があります。推奨される方法は、キャッシュなしのヘッダーを追加することです。

これが行われる方法です。

jQuery

iOS 6.0を確認し、Ajaxヘッダーを次のように設定します。

$.ajaxSetup({ cache: false });

ZeptoJS

iOS 6.0を確認し、Ajaxヘッダーを次のように設定します。

$.ajax({
type: 'POST',
headers : { "cache-control": "no-cache" },
url : ,
data:,
dataType : 'json',
success : function(responseText) {…}

サーバ側

Java

httpResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");

データをクライアントに送信する前に、必ずこれをページの上部に追加してください。

。ネット

Response.Cache.SetNoStore();

または

Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);

PHP

header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1.
header('Pragma: no-cache'); // HTTP 1.0.
于 2012-11-14T06:14:24.940 に答える
0

このスレッドを読む

iOS6のSafariは$.ajaxの結果をキャッシュしていますか?

URLでタイムスタンプを使用することにより、Webサーバーレベルでキャッシュを無効にすることができます。

于 2012-10-09T09:05:36.410 に答える