You need to enable JavaScript to run this app.
导航
A/B测试
最近更新时间:2024.11.19 19:47:07首次发布时间:2023.02.15 19:04:52

以下示例展示了如何根据用户请求中的 Cookie 请求头判断用户属于测试组或对照组,并进行 A/B 测试。

  • 如果用户请求中的 Cookie 请求头包含了 test,则返回测试组的响应内容。
  • 如果用户请求中的 Cookie 请求头包含了 control,则返回对照组的响应内容。
  • 如果用户请求中的 Cookie 请求头不包含 test 或 control,则以 50% 的概率随机返回测试组或对照组的响应内容。
addEventListener("fetch", event => {
  event.respondWith(handleRequest(event.request))
})

function handleRequest(request) {
  const NAME = "experiment-0"

  const TEST_RESPONSE = new Response("Test group")
  const CONTROL_RESPONSE = new Response("Control group")

  const cookie = request.headers.get("cookie")
  if (cookie && cookie.includes(`${NAME}=control`)) {
    return CONTROL_RESPONSE
  }
  else if (cookie && cookie.includes(`${NAME}=test`)) {
    return TEST_RESPONSE
  }
  else {
    const group = Math.random() < 0.5 ? "test" : "control" // 50/50 split
    const response = group === "control" ? CONTROL_RESPONSE : TEST_RESPONSE
    response.headers.append("Set-Cookie", `${NAME}=${group}; path=/`)

    return response
  }
}