Я только что включил mod_mem_cache
на сервере Apache2/PHP5 запущено пользовательское приложение, и был в ужасе от результата. Внезапно стали отображаться не те изображения, и я заметил, что однажды запрос на страницу HTML вместо этого отображал страницу CSS! Что может быть причиной этого? Конфигурация следующая:
CacheEnable память / MCacheSize 204800 CacheDefaultExpire 3600 CacheIgnoreHeaders Set-Cookie MCacheMinObjectSize 100 MCacheMaxObjectSize 5242880 MCacheRemovalAlgorithm LRU
решение1
Внутри mod_cache и mod_*_cache ключи поиска представляют собой довольно длинные контрольные суммы канонического URI и любых параметров Vary: (для согласованного контента). Крайне маловероятно, что эти ключи поиска будут конфликтовать, поэтому если вы получаете неверные ответы для указанной выше конфигурации, это похоже на ошибку.
Я один из авторов модулей кэширования, и если бы вы могли отправить мне детали запроса ([email protected]) и[email protected], или отправьте сообщение об ошибке с некоторыми подробностями, которые мы можем использовать для ее воспроизведения -http://httpd.apache.org/bug_report.html- мы можем этим заняться.
Или смело размещайте их здесь, и мы решим проблему.
решение2
Я нашел проблему. Я использовал mod_rewrite для перезаписи URL-адресов файлов, которые не существовали, в PHP-скрипт, который отправлял эти URL-адреса в нужный модуль. Поскольку все эти виртуальные URL-адреса перезаписывались в один и тот же URL-адрес, mod_cache путался. Чтобы решить эту проблему, я изменил следующую часть конфигурации Apache:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* /dispatch.php
К:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) /dispatch.php/$1
И теперь кэширование, похоже, работает идеально!