0

私はHTTPキャッシングに不慣れで、本当に助けが必要です...

  1. "Cache-Control"XHRをサーバーに送信するときに多くの人がヘッダーを設定するのを見ました。それを行う目的は何ですか?リクエストヘッダーもキャッシュする必要がありますか?

  2. このヘッダーをXHRに設定しました: Cache-Control max-age=30, must-revalidate、しかしFirefox 3.6.13は、30秒後に更新(強制更新さえ)してもファイルを再検証しないようです。サーバーにもアクセスログインはありません。これは、Apacheのファイルにexpireヘッダーを設定していないためですか?

    Firebugログから:

    応答ヘッダー
    日付2011年1月22日土曜日09:59:21GMT
    最終変更日2011年1月20日09: 05:
    11GMTEtag "3e000000023ca7-20d-49a436e5b3413"

    リクエストヘッダー
    Keep-Alive115
    接続keep-aliveContent -
    Typeapplication / xml
    Cache-Control max-age = 30、must-revalidate

    ファイルは変更されていますが、Firefoxは条件付き取得さえ行いません。まったく更新されませんResponse DateLast-Modified

4

2 に答える 2

2

クライアントは Cache-Control ディレクティブも送信できます。参照: https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-p6-cache-12#section-3.2

残念ながら、XHR によって設定された場合、ブラウザは (まだ) それらを尊重しませんが、介在するプロキシ キャッシュは通常そうします。

于 2011-02-03T00:02:54.433 に答える
1

サーバーは、クライアントではなく、再検証ディレクティブを設定する必要があります。

ソースは、コンテンツをキャッシュするかどうかを制御し、クライアントはそれを尊重するかどうかを決定します。

must-revalidateは、ヘッドリクエストが送信され、etagが異なる場合、リソースが更新されることを意味します。e-tagは通常、コンテンツが変更されると変更されるため、これは大きなファイルでは非常に一般的な意味のある方法です。

ただし、小さなファイルの場合は、リクエストをまったく行わない方がよい場合がありますが、タイムアウトは短くなります。次に、再検証する必要があります。サーバーの負荷と、7kbの画像へのヘッドリクエストにかかる時間は、完全な画像を提供するよりもはるかに少なくありません。

于 2011-01-22T12:15:01.570 に答える