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