Я только что включил mod_mem_cache
на сервере Apache2 / PHP5, на котором запущено собственное приложение, и ужаснулся результату. Внезапно появились неправильные изображения, и я заметил, что однажды запрос HTML-страницы обслуживал вместо этого CSS-страницу! Что может быть причиной этого? Конфиг выглядит следующим образом:
CacheEnable mem / MCacheSize 204800 CacheDefaultExpire 3600 CacheIgnoreHeaders Set-Cookie MCacheMinObjectSize 100 MCacheMaxObjectSize 5242880 MCacheRemovalAlgorithm LRU
Внутри mod_cache и mod _ * _ cache ключи поиска представляют собой довольно длинные контрольные суммы канонического URI и любых параметров Vary: (для согласованного содержимого). Маловероятно, что эти ключи поиска будут конфликтовать, поэтому, если вы получаете неправильные ответы для указанной выше конфигурации, это похоже на ошибку.
Я один из авторов модулей кеширования, и если бы вы могли либо отправить мне подробности запроса по электронной почте (colm@apache.org) и dev@httpd.apache.org, либо сообщить об ошибке с некоторыми деталями, которые мы можем использовать воспроизводить - http://httpd.apache.org/bug_report.html - мы можем это сделать.
Или не стесняйтесь размещать их здесь, и мы решим проблему.
Я нашел проблему. Я использовал 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
И теперь кеширование работает отлично!