Эта часть — про проблему, которую мы нашли, измерили и пока не решили. Решение есть, но оно затрагивает отчётность по рекламе, поэтому его принимает заказчик. Когда сделаем — выйдет продолжение с результатами.

Это одиннадцатая часть цикла «Кэш страниц без MISS».

Что нашли

Проверка на рабочем сайте:

АдресСтатус
страница каталогаHIT
тот же адрес с ?ysclid=…MISS — всегда

Записей по адресам с рекламными метками в кэше — ноль. Каждый клик по рекламе — полный рендер страницы.

Почему так

На сайте стоит модуль атрибуции заявок: при заходе с рекламы он ставит куку с источником, чтобы потом в заявке было видно, откуда пришёл человек. Кука ставится в ответе страницы — а ответ с Set-Cookie nginx не кэширует (седьмая часть). Каждый адрес с меткой уникален, каждый ответ — с кукой, значит, кэша нет.

Сколько это стоит

  • на крупном каталоге — 2246 запросов в сутки;
  • та же картина подтвердилась ещё на трёх сайтах;
  • и это самый дорогой трафик: за каждого такого посетителя заплачено, а он получает самый медленный ответ.

Почему не лечится в nginx

  • Игнорировать Set-Cookie (fastcgi_ignore_headers Set-Cookie) нельзя: кука первого посетителя уйдёт из кэша всем, атрибуция станет ложной.
  • Прятать куку (fastcgi_hide_header Set-Cookie) — значит не ставить её никому, атрибуция сломается.
  • Выкинуть метку из ключа недостаточно: ответ всё равно с кукой.

Как это решать

Ставить метку кампании на клиенте. Сервер отдаёт одинаковый HTML без кук, а скрипт читает параметры из адреса и сам пишет куку источника. Тогда:

  • метки можно убрать из ключа кэша — страница с рекламы приходит из той же ячейки, что и без неё;
  • атрибуция работает как раньше: кука ставится, только не сервером.

Почему мы ещё не сделали. Меняется то, как источник попадает в заявку, — значит, нужно сверить отчёты по рекламе до и после, и это решение заказчика, а не разработчика. Если у вас такая же связка, проверьте отчётность прежде, чем переносить метку на клиент.

Проверьте у себя

curl -s -o /dev/null -D - "https://сайт/страница/" | grep -iE 'set-cookie|x-cache-status'
curl -s -o /dev/null -D - "https://сайт/страница/?yclid=1" | grep -iE 'set-cookie|x-cache-status'

Если второй запрос всегда MISS с Set-Cookie — ваша реклама получает самый медленный сайт.

Платите за рекламу, а сайт открывается медленно?

Пришлите адрес — проверю, кэшируются ли страницы для рекламного трафика.

· полезно?
АЧ
Алексей Чикун веб-разработчик, команда TRIOHEAD

Делаю сайты и сервисы целиком: от вёрстки до сервера. Пишу о том, что проверил на своих проектах.

Комментарии

// загружаю комментарии…

Комментарии публикуются после проверки. Ссылки и HTML не принимаются.