Configura um teste A/B na rede global da Azion, entregando uma de duas respostas e memorizando o grupo de cada visitante em um cookie. Use esse padrão para executar experimentos randomizados, como comparar duas variantes de página, sem enviar tráfego a uma origem para decidir qual versão exibir.
function handleRequest(request) { const NAME = "TestA/B" const TEST_RESPONSE = new Response("Cookie A") const CONTROL_RESPONSE = new Response("Cookie B")
const cookie = request.headers.get("cookie") if (cookie && cookie.includes(`${NAME}=a`)) { return CONTROL_RESPONSE } else if (cookie && cookie.includes(`${NAME}=b`)) { return TEST_RESPONSE } else { const group = Math.random() < 0.5 ? "test" : "control" const response = group === "control" ? CONTROL_RESPONSE : TEST_RESPONSE response.headers.append("Set-Cookie", `${NAME}=${group}; path=/`)
return response }}
addEventListener("fetch", event => { event.respondWith(handleRequest(event.request))})Como funciona
O handler do evento fetch lê o cabeçalho Cookie da requisição com request.headers.get("cookie"). Se o visitante já possui o cookie do teste, a função retorna a variante correspondente para manter a experiência consistente entre as requisições. Para novos visitantes, Math.random() distribui o grupo de teste ou controle em aproximadamente 50/50, e response.headers.append("Set-Cookie", ...) persiste essa escolha para que a mesma variante seja servida nas próximas visitas.