Я хочу написать базовый драйвер кэширования файлов PHP в приложении PHP, которое направляет весь трафик на фронт-контроллер. Для примера предположим следующую упрощенную настройку с использованием apache mod_proxy_balancer:
В среде с одним сервером я бы кэшировал ответы на запросы на диске в структуре каталогов, соответствующей URI запроса. Затем простые правила перезаписи apache, подобные приведенным ниже, могут позволить apache возвращать статические файлы кэша (если они существуют) и вообще избегать процесса PHP:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /front_controller.php [L]
Очевидно, что это проблематично в среде с балансировкой нагрузки, поскольку файл кэша будет записан на диск только на том сервере PHP, где был обработан запрос, а результаты кэшированы.
Решение проблемы ...
Итак, чтобы решить эту проблему, я решил выбить некоторый код, чтобы отдельные фоновые PHP-серверы записывали / удаляли данные кэша в балансировщик нагрузки. Однако, поскольку я в основном не осведомлен о возможностях mod_proxy_balancer (и о любых других опциях балансировки нагрузки), мне нужна некоторая внешняя проверка для следующих вопросов:
И вопросы ...
- Можно ли выполнить какую-либо форму проверки, например, описанную выше, в RewriteRules, чтобы балансировщик нагрузки на передней панели обслуживал статический файл перед отправкой запросов на один из внутренних серверов?
- Это вообще желательно? Следует ли разрешать балансировщику нагрузки только для маршрутизации трафика и не беспокоиться о предоставлении статического содержимого?
- Было бы лучше просто использовать приемлемый TTL для кэшированных файлов на уровне сервера PHP и справиться с принятым уровнем перекрытия устаревшего кэша?
Наконец, извинения, если это слишком широко или уже был дан ответ; Я не совсем уверен, что искать в результате моего вышеупомянутого невежества по вопросу балансировки нагрузки.