Мой веб-сайт обслуживает одни и те же страницы как для зарегистрированных, так и для вышедших из системы пользователей. Запросы от авторизованных пользователей имеют заголовок авторизации. Я хочу использовать Apache mod_cache для обслуживания кешированных страниц только для вышедших из системы пользователей.
Начиная со свежего сервера, я могу делать запросы с заголовком авторизации, и они не будут кэшироваться. Если я сделаю запрос как вышедший из системы пользователь, запрос будет кеширован. Проблема в том, что последующие запросы с заголовком авторизации возвращают кешированный результат.
Как отключить mod_cache для запросов с заголовком авторизации?
edit: когда я писал это, я придумал решение, которое, похоже, работает.
RequestHeader set Cache-Control max-age=300 "expr=-z %{HTTP:Authorization}"
Это устанавливает заголовок Cache-Control для каждого запроса, не имеющего заголовка авторизации. Интересно, что ответы на запросы авторизации теперь содержат заголовок «Vary: Authorization».
Это хорошее решение? Должен ли я просто использовать Varnish вместо mod_cache?
Спасибо
Вопрос о том, стоит ли вам использовать лак, должен учитывать огромное количество переменных, о которых вы нам ничего не сказали. То, что вы реализовали, настолько близко к описанному вами требованию, насколько я могу придумать. Хотя я хотел бы убедиться, что mod_cache / varnish правильно учитывает заголовок "Vary".
Однако предикаты в вашем требовании довольно странные. Я подозреваю, что если вы захотите изменить их в будущем, у вас могут возникнуть проблемы - например, переключение на другой механизм аутентификации.