2

この投稿のおかげで、モバイル サファリが ajax POST リクエストをキャッシュする問題を解決できました。「headers: {'Cache-Control': 'no-cache'}」を追加すると、モバイル サファリで私のページのトリックが行われたようです。

ただし、モバイル サファリ webapp 経由で自分の web サイトにアクセスすると、ajax 要求は引き続きキャッシュされます。解決策を見つけることができなかったので、ここに投稿すると思いました。上記のヘッダーを追加することに加えて、「cache: false」を追加して、「url: '/ajax_url?v='+time」を追加してみました。何も機能していないようです。

モバイル サファリと Web アプリの動作が異なるのはなぜですか? これを解決するにはどうすればよいですか?

編集:

コードを忘れました。ここにあります:

function send_ajax(my_data,refresh){ 
    var now = new Date();
        var n = now.getTime();
    $.ajax({  
      url: "/ajax_page?time=" + n,
      type: "POST",
      headers: {"cache-control": "no-cache"},
      data: my_data,
      dataType: 'json'
      })
      .fail( function (jqXHR, textStatus, errorThrown){
      })
      .done(function(data){ // refresh the page after we get the results
        if(refresh=='true'){
            var pathArray = window.location.pathname.split('/');
            window.location.href = '/' + pathArray[1];

        }
      });         

    }

 send_ajax({'my_checkbox': $('#my_checkbox').is(':checked') },'true');  
4

1 に答える 1

2

常に機能する1つの解決策は、要求が行われた時刻(基本的にはタイムスタンプ)を持つパラメーターを要求に追加することです。これにより、すべてのリクエストがサーバーが処理する必要のある一意のスノーフレークになります。

これは、Webサイトのバージョンをすべてのscript / cssファイルの名前に入れて、更新後にサイトにアクセスするユーザーが新しいファイルをダウンロードする必要があるという考え方に似ています。

于 2013-02-06T16:22:33.597 に答える