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

Читать

Удаляем GET параметр при прохождении запроса через Varnish

Апрель 27, 2019 г.

Довольно удобно и просто удалять лишние параметры на этапе обработки запроса Varnish, если вы используете его на вашем веб сервере. Давайте посмотрим как это делается. Описанное ниже выполнялось для Varnish версии 4. Допустим вам нужно избавиться ...

Читать

 

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

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



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