mod_mem_cache 提供錯誤的內容!

mod_mem_cache 提供錯誤的內容!

我剛剛在運行自訂應用程式的 Apache2/PHP5 伺服器上啟用mod_mem_cache,並對結果感到震驚。突然間,提供了錯誤的圖像,我注意到有一次對 HTML 頁面的請求卻提供了 CSS 頁面!可能是什麼原因造成的?配置如下:

快取啟用記憶體 /
MCache大小 204800
快取預設過期 3600
CacheIgnoreHeaders 設定-Cookie
MCacheMinObjectSize 100
MCache最大物件大小 5242880
MCacheRemoval演算法LRU

答案1

在 mod_cache 和 mod_*_cache 內部,查找鍵是規範 URI 和任何 Vary: 參數(用於協商內容)的相當長的校驗和。這些查找鍵發生衝突的可能性極小,因此,如果您收到上述配置的錯誤回應,那麼這似乎是一個錯誤。

我是快取模組的作者之一,如果您可以將請求的詳細資訊郵寄給我([電子郵件受保護]) 和[電子郵件受保護],或提交一個錯誤,其中包含一些我們可以用來重現的詳細資訊 -http://httpd.apache.org/bug_report.html- 我們可以繼續下去。

或隨時將它們發佈在這裡,我們將解決這個問題。

答案2

我發現了問題。我使用 mod_rewrite 重寫 PHP 腳本中不存在的檔案的 URL,該腳本會將這些 URL 分派到正確的模組。因為所有這些虛擬 URL 都被重寫為相同的 URL,所以 mod_cache 變得混亂。為了解決這個問題,我更改了 Apache 配置的以下部分:

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

到:

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

現在快取似乎運作得很好!

相關內容