mod_mem_cache が間違ったコンテンツを提供しています。

mod_mem_cache が間違ったコンテンツを提供しています。

カスタム アプリを実行している Apache2/PHP5 サーバーで有効にしたところmod_mem_cache、結果に愕然としました。突然、間違った画像が提供されるようになり、HTML ページのリクエストに対して CSS ページが提供されることも一度ありました。原因は何でしょうか? 構成は次のとおりです。

キャッシュ有効メモリ /
Mキャッシュサイズ 204800
キャッシュデフォルト有効期限 3600
CacheIgnoreHeaders 設定 Cookie
MCacheMinObjectSize 100
MCacheMaxObjectSize 5242880
MCacheRemovalAlgorithm LRU

答え1

mod_cache と mod_*_cache の内部では、ルックアップ キーは正規の URI と Vary: パラメータ (ネゴシエートされたコンテンツ用) の非常に長いチェックサムです。これらのルックアップ キーが衝突する可能性は非常に低いため、上記の構成で誤った応答が返される場合はバグのようです。

私はキャッシュモジュールの作者の一人です。リクエストの詳細を私にメールで送っていただければ([メールアドレス]) そして[メールアドレス]または、再現に使用できる詳細を添えてバグを報告してください。バグレポート- 私たちはそれに乗ることができます。

または、お気軽にこちらに投稿してください。問題を解決いたします。

答え2

問題が見つかりました。存在しないファイルへの URL を PHP スクリプトに書き換えるために mod_rewrite を使用していました。PHP スクリプトはそれらの URL を適切なモジュールにディスパッチします。これらの仮想 URL はすべて同じ URL に書き換えられていたため、mod_cache が混乱していました。この問題を解決するために、Apache 構成の次の部分を変更しました。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /dispatch.php

に:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) /dispatch.php/$1

そして今ではキャッシュは完璧に機能しているようです!

関連情報