0

RFC 2616、セクション 9.5 (POST)から:

応答に適切な Cache-Control または Expires ヘッダー フィールドが含まれていない限り、このメソッドへの応答はキャッシュできません。

適切なヘッダーは何ですか?

背景: サーバーが次のヘッダーで応答し、応答がキャッシュされないか心配です。応答ヘッダーの例:

Cache-Control:max-age=2592000, public
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:22
Content-Type:application/json
Date:Sun, 20 May 2012 13:46:06 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive:timeout=15, max=100
Pragma:no-cache
Server:Apache/2.2.22 (Amazon)
Vary:Accept-Encoding,User-Agent
X-Powered-By:PHP/5.3.13

post リクエストは、JavaScript から jQuery の$.ajax関数をcacheset to に使用して行われますfalse。ただし、jQuery はそのオプションを無視します。2012-05-20 CEST のドキュメントからの引用:

POST でフェッチされたページは決してキャッシュされないため、jQuery.ajaxSetup() の cache オプションと ifModified オプションはこれらのリクエストには影響しません。

アップデート

jQueryのドキュメントが間違っている可能性はありますか? jQuery フォーラムの関連スレッドを参照してください。

4

2 に答える 2

1

このヘッダー、

Cache-Control:max-age=2592000, public

応答が仲介者によって長時間キャッシュされます。pragma: no-cacheこれと矛盾するため、応答は少し混乱しています。ただし、プラグマヘッダーを確認するのは、特定の古いプロキシのみであると思われます。

jQuery は中間キャッシュを制御できないため、ISP などに応答をキャッシュしているパブリック キャッシュが存在する場合があります。

于 2012-05-20T14:27:44.320 に答える
0

紛らわしいようで、キャッシュを有効にしているように見えCache-Controlますが、同時にキャッシュを無効にしているようです。とにかく、HTTP ステータス コードは、リクエストがキャッシュされたかどうかを正確に示す必要があります。- キャッシュされていない、または同様の - キャッシュされている。PragmaExpires200304

于 2012-05-20T14:34:18.117 に答える