进行A/B测试

边缘函数可以帮助您快速进行 A/B 分组测试部署,用于灰度发布或实验性的功能分流等场景。接下来将为您介绍如何通过控制基于 Cookie 提供的响应来设置 A/B 测试。

代码示例

  • 实现效果:使用相同 URL 直接访问进行 A/B 测试

  • 语言类型JavaScript

  • 代码示例

    // 通过Cookie头判断用户分组,不同分组标签返回不同内容。
    async function handleRequest(request) {
      const NAME = 'var';
      const TEST_RESPONSE = new Response('A group'); // Response内容也可以替换成fetch请求的动态内容
      const CONTROL_RESPONSE = new Response('B group');
      // 用Cookie中携带的var字段判断属于哪个分组
      const cookie = request.headers.get('cookie');
      if (cookie && cookie.includes(`${NAME}=B group`)) {
        return CONTROL_RESPONSE;
      } else if (cookie && cookie.includes(`${NAME}=A group`)) {
        return TEST_RESPONSE;
      } 
      else {
        // 如果没有Cookie,则选择一个    const group = Math.random() < 0.5 ? 'A group' : 'B group';
        const response = group === 'B group' ? CONTROL_RESPONSE : TEST_RESPONSE;
        response.headers.append('Set-Cookie', `${NAME}=${group}; path=/`);
        return response;
      }
    }
    
    export default {
      fetch(request) {
        return handleRequest(request);
      }
    }
    

部署效果

在浏览器中访问边缘函数绑定的指定函数或您配置的特定路由地址,若浏览器中无Cookie,则随机为当前浏览器进行分组:

  • 若赋予A组标签,则返回A组对应的响应内容。image

  • 若赋予B组标签,则返回B组对应的响应内容。image