带有功能标志的智能和快速运输

通过功能管理提高产品质量和速度。通过产品实验推动可衡量的影响。在任何平台(包括网站,后端代码,移动和对话应用程序)上优化体验。

Blue Apron通过Optimizely实验更快地验证产品

Blue Apron的工程团队从本地的测试解决方案迁移到优化全栈,能够将实验速度提高了10倍。借助Optimizely的实时结果,他们可以几天进行实验,而不必等待数周的数据科学资源。

通过功能标记和实验降低风险并提高影响力

  • 更快发布,风险更低

    通过在一定比例的用户或关键细分中验证新功能,然后通过功能强大的功能向所有人推广,可以更快地进行创新。

  • 改善软件性能

    通过运行A / B测试以验证性能和可靠性,最大程度地提高新API,微服务和体系结构设计的响应能力。

  • 在任何设备上的任何应用程序中进行实验

    测试跨越网站,移动设备,顶级应用程序,IoT,对话界面和其他体验的体验。

  • 证明软件版本的影响

    实时实验结果可帮助您确定所构建的功能是否对客户产生积极影响。

  • 确保更好的连续交付

    将功能标记集成到您的开发周期中,以提高开发速度,更安全的代码部署并提高开发人员生产率。

  • 远程配置您的应用程序

    无需代码部署即可实时更新您的应用程序和实验。通过运行测试不同功能配置的实验来优化功能。

更快,更自信的软件发布

  • 通过逐步推出功能来自信地启动功能
  • 在您的软件开发周期中进行实验
  • 量化新功能的影响
我们希望迅速删减会降低转化率的想法。如果我们在生产中投放似乎无法正常工作的产品,则希望尽快将其淘汰。
艾米莉·德雷斯纳
艾米莉·德雷斯纳

首席技术官

瞬间就能完成的实验

无论您是否正在跑步,Optimizely拥有性能最高的实验解决方案 客户端 要么 服务器端 实验。用 性能优势,通过将关键实验决策从浏览器移动到Edge,实验负载迅速增加。*服务器端实验以零延迟存储在内存中。在不影响性能的情况下进行规模实验。

*Performance Edge正在开发中,可能会发生变化。对于未来可用性,发布日期,功能或适用于此功能的条款,Optimizely不做任何承诺。

专为工程师打造的实验平台

开放平台

具有可插拔组件的开源SDK使您可以控制网络活动并与自己的分析管道集成。

快速决策引擎

在对性能至关重要的代码路径中进行实验。我们的SDK将用户存储在内存中,因此实验对延迟没有影响。

可扩展架构

全球成千上万的客户使用实时事件收集服务器,您可以立即获得实验结果。

阅读文档
                      
              import optimizely
              
              optimizely = optimizely.Optimizely(datafile)
              
              

# Activate an experiment

variation = optimizely.activate('my_experiment', 'user_123') if variation == 'variation_a':

# Execute code for variation A

elif variation == 'variation_b':

# Execute code for variation B

else:

# Execute default code

# Track an event

optimizely.track('purchase_completed', 'user_123')
                      
              import com.optimizely.ab.Optimizely;
              
              优化地 optimizely = 优化地.builder(datafile).build();
              
              

// Activate an experiment

Variation variation = optimizely.activate("my_experiment", "user_123"); if (variation != null) { if (variation.is("variation_a")) {

// Execute code for variation A

} else if (variation.is("variation_b")) {

// Execute code for variation B

} } else {

// Execute default code

}

// Track an event

optimizely.track("purchase_completed", "user_123");
                      
              import "optimizely"
              
              project = 优化地::Project.new(datafile)
              
              

# Activate an experiment

variation = project.activate('my_experiment', 'user_123') if variation == 'variation_a'

# Execute code for variation A

elsif variation == 'variation_b'

# Execute code for variation B

else

# Execute default code

end

# Track an event

project.track('purchase_completed', 'user_123')
                      
              var optimizely = require('optimizely-server-sdk');
              
              var optimizely = optimizely.createInstance({ datafile: datafile });
              
              

// Activate an experiment

var variation = optimizely.activate('my_experiment', 'user_123'); if (variation === 'variation_a') {

// Execute code for variation A

} else if (variation === 'variation_b') {

// Execute code for variation B

} else {

// Execute default code

}

// Track an event

optimizely.track('purchase_completed', 'user_123');
                      
              use 优化地\Optimizely;
              
              

// Initialize an 优化地 client

$optimizelyClient = new 优化地($datafile);

// Activate an experiment

$variation = $optimizelyClient->activate('my_experiment', 'user_123'); if ($variation == 'variation_a') {

// Execute code for variation A

} elseif ($variation == 'variation_b') {

// Execute code for variation B

} else {

// Execute default code

}

// Track an event

$optimizelyClient->track('purchase_completed', 'user_123');
                      
              using 优化地SDK;
              
              

// Initialize an 优化地 client

优化地 优化地Client = new 优化地(datafile);

// Activate user in an experiment

var variation = 优化地Client.Activate("my_experiment", userId); if (variation != null) { if (variation == "control") {

// Execute code for variation A

} else if (variation == "treatment") {

// Execute code for variation B

} } else {

// Execute default code

}

// Track conversion event

优化地Client.Track("my_conversion", userId);
                      
              var optimizely = require('optimizely-client-sdk');
              

// Initialize an 优化地 client

var optimizelyClientInstance = optimizely.createInstance({ datafile: datafile });

// Alternatively, if you don't use CommonJS 要么 npm, you can install the minified snippet 和 use the globally exported varible as follows

var optimizelyClientInstance = window.optimizelyClient.createInstance({ datafile: datafile });

// Activate user in an experiment

var variation = optimizelyClientInstance.activate('my_experiment', userId); if (variation === 'control') {

// Execute code for variation A

} else if (variation === 'treatment') {

// Execute code for variation B

} else {

// Execute default code

}

// Track conversion event

optimizelyClientInstance.track('my_conversion', userId);
                      
              

// Initialize an 优化地 manager

OPTLYManager *optlyManager = [OPTLYManager init:^(OPTLYManagerBuilder * _Nullable builder) { builder.projectId = @"projectId"; }];

// Initialize an 优化地 client by asynchronously downloading the datafile

[optlyManager initializeWithCallback:^(NSError * _Nullable error, OPTLYClient * _Nullable client) {

// Activate user in a test

OPTLYVariation *variation = [client activate:@"my_experiment" userId:@"userId"]; if ([variation.variationKey isEqualToString:@"control"]) {

// Execute code for the control

} else if ([variation.variationKey isEqualToString:@"treatment"]) {

// Execute code for the treatment

} else {

// Execute default code

}

// Track conversion event

[client track:@"my_conversion" userId:@"userId"]; }];
                        
              

// Initialize an 优化地 manager

let optimizelyManager : OPTLYManager? = OPTLYManager.init {(builder) in builder!.projectId = "projectId" }

// Initialize an 优化地 client by asynchronously downloading the datafile

optimizelyManager?.initialize(callback: { [weak self] (error, optimizelyClient) in

// Activate user in a test

if let variation = optimizelyClient?.activate("my_experiment", userId: "userId") { if (variation.variationKey == "control") {

// Execute code for the control

} else if (variation.variationKey == "treatment") {

// Execute code for the treatment

} } else {

// execute default code

}

// Track conversion event

optimizelyClient?.track("my_conversion", userId: "userId") })
                          
              import com.optimizely.ab.Optimizely;
              
              优化地 optimizely = 优化地.builder(datafile).build();
              
              

// Activate an experiment

Variation variation = optimizely.activate("my_experiment", "user_123"); if (variation != null) { if (variation.is("variation_a")) {

// Execute code for variation A

} else if (variation.is("variation_b")) {

// Execute code for variation B

} } else {

// Execute default code

}

// Track an event

optimizely.track("purchase_completed", "user_123");