web-dev-qa-db-ja.com

部分的なコンテンツを提供するApacheキャッシュ完全なコンテンツの要求に対する206の応答

Mod_cacheを使用してApache2.2.19の背後でPlone3.3.6を実行しています。最近、Apacheが範囲要求に対する206応答をキャッシュし、完全なリソースの要求が行われたときにその部分応答を提供していることに気付きました。

何が起こっているようです:

  • 一部のクライアントは、まだキャッシュにないか、キャッシュにあるが期限切れになっているリソースに対して範囲要求を行います
  • Apacheは206応答を正しく提供します
  • 別のクライアントが同じリソースを標準リクエストします
  • Apacheは、この2番目のクライアントに同じ206応答を提供します。つまり、応答全体を200で提供する必要があります。

これは非常にまれにいくつかのサイトで私たちのCSSに問題を引き起こしています

これを一貫して複製できます。範囲要求を行うための小さなpythonスクリプトを作成しました。

Apacheの構成では、通常とは異なることは何もしていないと思います。 Ploneからページを提供するためにリバースプロキシ構成を使用しています。 mod_cacheに関連するApache構成は次のとおりです。

CacheEnable disk /
CacheDisable /static
CacheDisable /sitemap.xml.gz
CacheDisable /robots.txt
CacheIgnoreHeaders Set-Cookie

UseCanonicalName On

RequestHeader edit Accept-Encoding ^.*gzip.*$ gzip early
RequestHeader edit Accept-Encoding ^(?!gzip).*$ "" early

Apacheキャッシングガイド キャッシュされるために応答が「必須」であるステータスコードのリストに206の応答が含まれていません。これはApacheのバグですか、それとも構成で何か問題がありますか?

7
scarba05

これは Apacheバグ4911 であり、 トランクで修正 ですが、2.2.19では修正されていません。

4
Duncan Harris

これはApache2.2.23で修正されています。 2.2.23にアップグレードすると、パッチを適用する必要はありません

0
scarba05