Я знаю Варьировать: печенье
является не очень понравился, так как это приводит к кэшированию всех вариантов файлов cookie, о которых может сообщить пользователь. С другой стороны, без него мне пришлось использовать Кэш-контроль: без кеша
чтобы указать моему серверу кэширования NGINX полностью пропустить кэширование содержимого, которое мощь иметь пользователя, вошедшего в систему (кстати, на каждой странице моего сайта, поскольку в верхней части страницы есть поле учетной записи).
Я отправляю файлы cookie только в том случае, если пользователь входит в систему, поэтому большинство просмотров страниц выиграют от кэширования. Я хотел бы сузить его, чтобы было только два варианта: кешированная версия для пользователей, чья «вариация» заключается в том, что у них есть нет файлы cookie и версия без кэширования для тех, у кого есть файлы cookie (например, пользователь вошел в систему и имеет файлы cookie для аутентификации).
Если я добавлю «Vary: Cookie» в свою программу Perl, есть ли способ сообщить NGINX, что в этом случае он должен обращать внимание только на то, идентификатор сессии
куки есть или нет? Что-то вроде -- чтобы сделать псевдозаголовок -- Варьировать: Cookie('sessionId')
? Если есть способ реализовать это в заголовке, созданном сценарием, который затем будет уважать NGINX, я думаю, что предпочел бы это, а не помещать его в конфигурацию NGINX, но любое решение будет оценено.
Я не совсем уверен, как проверить, заставлю ли я NGINX сходить с ума от кеширования, но мне интересно, может ли что-то в этом роде сработать: зрителю, не вошедшему в систему, скрипт отправляет Варьировать: печенье
, а на зрителя, который является вошли в систему, он отправляет и этот заголовок, и Кэш-контроль: без кеша
. Поймет ли NGINX, что это говорит ему кэшировать первый ответ, но не вариант? Или я мог бы что-то испортить способами, которые я сейчас не улавливаю?
Обновлять: Вот пример одного из моих серверных блоков:
сервер {
server_name myservername.tld
слушать 80;
место расположения / {
proxy_cache $PROXY_CACHE;
proxy_cache_valid 200 302 60 м;
proxy_cache_valid 404 1 м;
proxy_cache_use_stale ошибка timeout http_429 http_500 http_502 http_503 http_504;
proxy_cache_background_update включено;
proxy_cache_revalidate включен;
proxy_cache_min_uses 1;
proxy_cache_lock включен;
прокси_пароль $схема://$APACHE_PROXY_REQ_IP:$APACHE_PROXY_REQ_PORT;
}
}