2012-04-29 7 views
1

Firefox 12では、同じURIだがリクエストヘッダーが異なる(受け入れフィールドが異なる)2つのリソースを連続してリクエストすると、レスポンスは最初のリクエストのキャッシュレスポンスとなります。最初の要求が正しく返され、2番目の要求は、このようなものですされているページのテキスト/ htmlの要求である:Firefoxはキャッシュレスを回避しますか?

要求されたURLは次のとおりです。

レスポンスヘッダ

:これらのヘッダとhttp://localhost:8080/test/ Content-Type text/html; charset = ISO-8859-1
日付Sun、29 Apr 2012 19:41:53 GMT
サーバーApache-Coyote/1.1

リクエストヘッダ

受け入れるアプリケーション/ JSON
、エンEN-US
受け入れる言語を収縮、gzipでエンコード受け入れ; Q = 0.5
接続がキープアライブ
クッキーをJSESSIONID = DB75F9F730D72D040CB5781903B60E87
ホストlocalhost:8080
Referer http://localhost:8080/test/
ユーザエージェントMozilla/5.0(Windows NT 6.1; WOW64; rv:12.0)Gecko/20100101 Firefox/12.0 X-Requested-With XMLHttpRequest

この問題を回避するための提案はありますか?前もって感謝します。

+0

ブラウザキャッシュと確実に戦う方法は、ランダムなクエリ文字列パラメータです。 –

+1

@IliaGこれは答えでありコメントではありません。 [Using XMLHttpRequest](https://developer.mozilla.org/en/XMLHttpRequest/Using_XMLHttpRequest)も参照してください。 – Neil

+0

httpレスポンスヘッダーには最新情報がありませんか?キャッシュ制御のように、最後に変更され、期限が切れますか?なぜなら、サーバーがhttpヘッダー経由でキャッシュ可能であると宣言していない限り、firefoxは応答をキャッシュしないと思うからです。 – goat

答えて

0

$.ajax({...})パラメータにcache:falseを使用してください。これにより、クエリ文字列にランダムな値が追加され、キャッシングが発生しないことが保証されます。

+0

キャッシングを無効にするべきではありませんが、ブラウザで実行する必要があります。キャッシングは、さまざまなMIMEタイプを認識する必要があります。 – koppor

+0

@koppor:私はそれが 'Vary'ヘッダに依存すると思います。 – ThiefMaster

0

すべてのAJAX要求に誤ったキャッシュを適用するために次の行を使用するには、jQueryのあなたのサーバが別の受け入れヘッダーに基づいてさまざまなコンテンツを送信している場合は、それがあるべきajaxSetup

+0

これはキャッシングを無効にします。私は、応答をキャッシュする必要がありますと仮定します。ヘッダーフィールド "Vary:Accept"は正しい場所のようです。 http://www.subbu.org/blog/2007/12/vary-header-for-restful-applicationsも参照してください。 – koppor

1

$.ajaxSetup({ cache: false }); 

より多くのオプションを使用して作られましたAcceptヘッダーがキャッシュキーの一部である必要があることをキャッシュに伝えるために "Vary:Accept"を送信します。あなたのサーバーはそうしていますか?

+0

Jereyの行は 'return Response.ok()。header(HttpHeaders.VARY、HttpHeaders.ACCEPT).entity(viewable).build();'という行です。 – koppor

関連する問題