Удалить все 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 VCL “Symbol not found: std....”

Май 24, 2018 г.

После std идет название какой либо функции стандартной библиотеки VCL. Скорее всего проблема в том, что вы не подключили std в вашей конфигурации (часто встречается при миграции конфигов). Для подключения библиотек в Си используется директива import. ...

Читать

Кросс доменные заголовки в настройках Varnish

Апрель 18, 2019 г.

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

Читать

 

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

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



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