Отключить 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".

Однако предикаты в вашем требовании довольно странные. Я подозреваю, что если вы захотите изменить их в будущем, у вас могут возникнуть проблемы - например, переключение на другой механизм аутентификации.

Другие вопросы по тегам