Adobe Analytics – Event Serialization

事件序列化(Event Serialization)是为了避免发送重复的转换事件,例如当用户刷新页面、重新提交按钮或其它会触发重复发送的程序代码等等。在SiteCatalyst中,可以在事件之后使用冒号作为分隔符,加入具备唯一性的序列化编号完成事件的序列化:

s.events = event2:1232432432

SiteCatalyst对序列号的约束为:

  1. 不能超过21个字符;
  2. 序列号一旦创建,是永远有效的,使用重复的编号会使该事件的发送作废。

使用JavaScript生成唯一编号

有很多种方式可以完成,比如取一个宽度11位的随机数再进行平方根运算,或者使用JavaScript创建GUID.

Math.floor(Math.random() * 11111111111);

但考虑到序列号需要具备一定的业务意义,如时间可以作为排序依据,平方根和GUID则不行,所以采用当前时间+随机数是一种比较好的选择。

new Date().getTime() + Math.random();

编写事件序列化模块

我们将一个转换事件作为输入,输出为一个已序列化的事件。考虑到在一些开始、结束事件中会共享同一个序列号,我们使用浏览器Cookie来临时存储序列号,SiteCatalyst提供了s.getAndPersistValue模块进行Cookie读写。

s.serializeEvent = function(sEvent) {
    if (s.getAndPersistValue(null, "s_serialization_id") == "") {
        s.getAndPersistValue(new Date().getTime() + Math.random(), "s_serialization_id");
    }

    if (sEvent != null && sEvent.indexOf(":") == -1) {
        sEvent = sEvent + ":" + s.getAndPersistValue(null, "s_serialization_id");
    }
    return sEvent;
}

以下是一个序列化event4并添加到s.events的例子:

s.events = s.apl(s.events, s.serializeEvent("event4"), ",", 1);

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>