Удалить все 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

Апрель 18, 2019 г.

Пример конфигурации для Varnish, если вы решили отдавать им CORS headers, чтобы разрешить кросс-доменные запросы. Запросы бывают простые и сложные с точки зрения спецификации CORS, где: простые запросы - это GET, POST, HEAD с заголовками из ...

Читать

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

Май 30, 2018 г.

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

Читать

 

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

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



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