我正在将A / B测试构建到WordPress PLugin中。
着陆页自定义帖子类型记录可以包含任意数量的页面A / B测试变体。每个变体都分配有字母A-Z。
使用内置的WordPress元数据功能,页面的所有变体都存储在数据库中的单个Meta数据键中。
以下是包含4个变体的1页元数据的示例。
为用户加载页面时,在查看此特定页面时,会为这4个变体中的一个提供服务。他们正在查看的变体的'ab-variation-views'
键在每次加载时都会更新+1。
我现在在考虑它时有点担心。如果10个用户一次加载此页面,则10个随机获得下面4个变体中的1个。当它更新元数据时,为10个用户中的每个用户增加视图计数器。我想这里可能存在竞争条件/问题。
如果10个用户中有4个正在查看变体B并更新其视图计数+1,那么它们可能不会全部保存,甚至不会从另一个变体中查看视图。
我应该考虑将AB测试变体数据存储在自己的数据库表中吗?如果我这样做,每个页面变体可以有自己的记录,而不是共享相同记录和字段的页面的所有变体!
array (
0 =>
array (
'ab-variation-letter' => 'B',
'ab-variation-title' => 'bbbbbb',
'ab-variation-wysiwyg-editor-' => 'bbbbbbbbbbbb',
'ab-variation-conversion-count' => '',
'ab-variation-views' => '',
'ab-variation-start-date' => '',
'ab-variation-end-date' => '',
'ab-variation-winner' => '',
),
1 =>
array (
'ab-variation-letter' => 'C',
'ab-variation-title' => 'ccccc',
'ab-variation-wysiwyg-editor-' => 'ccccccccccccccccc',
'ab-variation-conversion-count' => '',
'ab-variation-views' => '',
'ab-variation-start-date' => '',
'ab-variation-end-date' => '',
'ab-variation-winner' => '',
),
2 =>
array (
'ab-variation-letter' => 'D',
'ab-variation-title' => 'dddddddd',
'ab-variation-wysiwyg-editor-' => 'd',
'ab-variation-conversion-count' => '',
'ab-variation-views' => '',
'ab-variation-start-date' => '',
'ab-variation-end-date' => '',
'ab-variation-winner' => '',
),
3 =>
array (
'ab-variation-letter' => 'E',
'ab-variation-title' => 'eeeeeeee',
'ab-variation-wysiwyg-editor-' => 'eeeeeee eeeeeeeeeeeee eeeeeeee',
'ab-variation-conversion-count' => '',
'ab-variation-views' => '',
'ab-variation-start-date' => '',
'ab-variation-end-date' => '',
'ab-variation-winner' => '',
),
)