4

モバイルアプリでjquery ajaxを使用して、安らかなAPIを介してjsonデータを取得しています。私の安らかな API は、etags をサポートするように構成されています。私の安らかな API は別のサブドメインでホストされているため、クロスドメイン呼び出しを処理するように CORS を構成しました。私の開発環境では、モバイル アプリを test.domain.com で実行するように構成し、restful api を test2.domain.com で実行するように構成して、クロス ドメイン呼び出しをテストできるようにしました。これはすべてうまくいきます!私の ajax 呼び出しは、etags で期待するとおりに動作します。

json コンテンツを取得するための呼び出しを行います。

$.ajax({
    ifmodified: true,
    ....
    success: function(data){

    }

ステータス 200 を取得し、成功コールバックのデータ変数にデータが含まれています。同じリソースに別の呼び出しを行います (変更は想定されていません) ステータス 304 が返され、成功コールバックのデータ変数にデータ (キャッシュからロードされたもの) が含まれます。

ここまでは順調ですね。

モバイル アプリと安静な API の両方を同じドメインに配置するように開発環境を構成すると、ここで問題が発生します。

$.ajax({
    ifmodified: true,
    ....
    success: function(data){

    }

ステータス 200 を取得し、成功コールバックのデータ変数にデータが含まれています。同じリソースに別の呼び出しを行います (変更は想定されていません) ステータス 304 とデータ変数が undefined になります!!!!

この構成でjqueryがデータ変数にキャッシュにあるものを入力しない理由は何ですか? また、Ajax 呼び出しで CORS とクロスドメイン設定を削除しましたが、まだ運がありません。jquery 1.7.1 を使用しています。

4

1 に答える 1

0

デフォルトでは、リクエストは常に発行されますが、ブラウザはキャッシュから結果を提供する場合があります。キャッシュされた結果の使用を禁止するには、キャッシュを false に設定します。最後のリクエスト以降にアセットが変更されていない場合にリクエストが失敗を報告するようにするには、ifModified を true に設定します。

于 2012-04-07T19:13:49.347 に答える