2012-10-09 4 views
6

可能性の重複を要求します:
Is Safari on iOS 6 caching $.ajax results?防止のiOS 6は

私はAndroidとiOS上の細かい動作しますPhoneGapを用いたハイブリッドアプリケーションを持っています。しかし、私がiOS 6でテストを開始したとき、私は自分のAjaxコールの大部分でサーバーデータを取得していないことに気付きました。代わりに以前のAjaxコールからキャッシュデータを取得していました。

これまでのところ、私はキャッシュを無効にするには、次のオプションを試してみました -

  1. は、AJAX呼び出しno-cache = true
  2. $.ajaxPrefilter(function (options, originalOptions, jqXHR) { options.data = jQuery.param($.extend(originalOptions.data||{}, { timeStamp: new Date().getTime() })); });
インサイド
  • $.ajaxSetup({ cache: false });
  • クエリ文字列パラメータとしてタイムスタンプを含めます

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

  • 答えて

    0

    あなたはWebサーバレベルでかつURLにタイムスタンプを使用してキャッシュを無効にでき

    Is Safari on iOS 6 caching $.ajax results?

    このスレッドを読んでください。リクエストのキャッシュを防止するための様々な方法があります。それを修正する方法here

    から

    4

    。推奨される方法は、no-cacheヘッダーを追加することです。

    これはこの方法です。

    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"); 
    

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

    。NET

    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. 
    
    関連する問題