Удалить все cookie, кроме нужных в конфигурации Varnish

При кешировании в varnish возникает вопрос, какие данные использовать для генерации хеш-функции кеша. Типично используют req.url и reg.http.Cookie. Но включение куки приводит к тому, что страницы не попадают в кеш Varnish.

Типовая генерация хеша в varnish 4:

Страница (HTML код) может зависеть от значений, хранящихся в cookie, потому приходиться добавлять эту переменную. Но современные сайты в большинстве случаев генерируют куки, связанные с аналитикой, сбором информации о пользователе третьей стороной и т.п., не имеющие никакой ценности для самого сайта.

Многие из них начинаются с символа подчеркивания, потому не сложно почистить их в секции vcl_recv:

Но, к сожалению, не все куки, делающие на практике кеширование страниц в varnish бесполезным, следуют этому правилу. Попытки очистить известные куки правилами вроде:

рано или поздно приводят к пониманию, что сложно предсказать какие ещё куки захочет создавать facebook или google.

Вместо черного списка, более надежно создать белый список переменных cookie, которые влияют на внешний вид страницы, и для комбинации значений которых можно/нужно сохранить отдельный экземпляр в кеше.

Для этого следует обладать полной «картой» переменных cookie вашего веб-приложения (сайта), понимать как они могут влиять на HTML код.

Вариант 1 — Маркировка и замена

Довольно изящный вариант, вполне рабочий, найденный мной в сети. Скорее всего написан из-за не очень глубоких знаний регулярных выражений.

Арсенал функций varnish 4 очень скромный. Потому идея была интересная, и я знакомлю вас с ней.

Вариант 2 — сложная замена

Все это можно сделать единственным вызовом функции regsuball, но приходится прибегать к редко используемому синтаксису регулярных выражений.

«Lookbehind» конструкция (?<=\s|^) позволяет нам проверить, что перед искомым выражением идет пробел или начало строки. А условные выражения (?! … ) позволяют отфильтровать переменные по «белому» списку.

Написать комментарий

Мало букафф? Читайте есчо !

Диагностика varnish, полезные команды

Май 30, 2018 г.

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

Читать

Как исправить ошибку upstream sent too big header while reading response header from upstream?

Январь 18, 2021 г.

Если текст подобной ошибки вы обнаружите в логах ngnix, то см. как её исправить в данной статье. Ошибка связана с недостаточным размером буфера для передачи заголовка запроса. Во-первых, надо разобраться что является в данном случае upstream-ом, ...

Читать

 

Комментарии к «Удалить все cookie, кроме нужных в конфигурации Varnish»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: