Как использовать Varnish для A/B тестирования и развертывания функций?
Сегодня наш веб-слой открыт для всего мира. Мы хотели бы добавить Varnish перед нашим веб-слоем, чтобы ускорить сайт и уменьшить количество обращений к бэкэнду. Тем не менее, у нас есть некоторые проблемы, и мне было интересно, как большинство людей подходят к ним:
A / B-тестирование - как вы тестируете две "версии" каждой страницы и сравниваете? Я имею в виду, откуда лак знает, какую страницу подавать? Если и как вы сохраняете отдельные версии на каждой странице?
Развертывание функций - как бы вы создали простой механизм развертывания функций? Допустим, я хочу открыть новую функцию / страницу только для 10% трафика... а затем увеличить ее до 20%?
Как вы справляетесь с развертыванием кода? Вы очищаете весь свой кеш лака при каждом развертывании? (У нас есть развертывания на ежедневной основе). Или вы просто позволяете ему медленно истечь (используя TTL)?
Любые идеи и примеры по этим вопросам с благодарностью!
1 ответ
A/B-тестирование - как вы тестируете две "версии" каждой страницы и сравниваете? Я имею в виду, откуда лак знает, какую страницу подавать? Если и как вы сохраняете отдельные версии на каждой странице?
У вас есть несколько вариантов:
- Просто выставьте их по разным URL.
Обойти кеш для конкретного URL. Вы можете сделать это, вернувшись
pass
вvcl_recv
, Что-то вроде этого:sub vcl_recv { if (req.url ~ "^/path/to/document") { return (pass); } }
Явная очистка кэша при открытии новой версии.
Развертывание функций - как бы вы создали простой механизм развертывания функций? Допустим, я хочу открыть новую функцию / страницу только для 10% трафика... а затем увеличить ее до 20%?
Я не уверен, что есть "простой" способ сделать это. Так как вы можете поставить произвольный C
код в вашем .vcl
В файлы, которые вы, возможно, могли бы добавить немного логики, чтобы выбрать случайное число, а затем выбрать соответствующий внутренний путь на основе результата.
Как вы справляетесь с развертыванием кода? Вы очищаете весь свой кеш лака при каждом развертывании? (У нас есть развертывания на ежедневной основе). Или вы просто позволяете ему медленно истечь (используя TTL)?
При серьезных изменениях мы просто очищаем кеш, а при небольших изменениях просто даем срок действия.