发明内容
鉴于现有技术中存在的问题,本发明的目的在于提供一种控制网络视频广告投放频次及优先级的方法及其系统。
为了达到上述目的,本发明提供了一种控制网络视频广告投放频次及优先级的方法,该方法包括如下步骤:步骤(1)用户通过浏览器点击其所载的播放器和播放视频信息,视频播放器发送广告请求,浏览器端的cookie会随着请求参数节目标识和广告位标识,即palyld和seq,一起被发送到广告系统;步骤(2)广告系统根据请求参数palyld和seq,从广告缓存中找出满足定向投放条件的优先级N+频次广告集合;步骤(3)将从用户浏览器上取得的cookie信息通过反序列化重新还原为TheaterDefCookie数据结构对象数组defCookies,其中TheaterDefCookie的数据结构用于描述用户对优先级和N+频次广告的浏览历史;步骤(4)根据优先顺序遍历广告集合,并且根据获得的TheaterDefCookie数据结构对象数组defCookies选择一优先级N+频次广告在当前用户的浏览器端播放;步骤(5)更新TheaterDefCookie数据结构对象,广告系统对其进行序列化为字符串,以将用户浏览该优先级N+频次广告的历史信息以cookie方式存于用户浏览器上。
进一步,该方法还包括:将优先级和N+频次控制信息以TheaterDefInfo结构存于广告系统的缓存中,TheaterDefInfo结构包括有level:该优先级N+频次广告的优先级;periodi和timesi(i=1,2,…,n):表示在整个投放周期之下的子投放周期,以天为单位,即广告在每periodi天内最多能被同一个用户观看timesi次。
进一步,所述方法中的步骤(4)进一步包括:对缓存中优先级N+频次广告集合进行遍历,每个优先级N+频次广告都唯一对应一个TheaterDefInfo数据结构对象,取得一广告A,如果从浏览器cookie还原的TheaterDefCookie数组defCookies中不包括当前被遍历的广告A的cookie信息,则为广告A新创建一个新的TheaterDefCookie数据结构对象defCookie,并赋值给minDefCookie,minDefCookie为TheaterDefCookie数据结构临时变量,用来保存用户最早一次浏览的有效优先级N+频次广告信息,也就是要投放在当前浏览用户的优先级N+频次广告的cookie信息,然后跳出循环;
如果defCookies中包括当前广告A的cookie信息,则取得广告A的TheaterDefCookie数据结构对象defCookie;如果该defCookie中的最近展示广告时间早于minDefCookie中的展示广告时间,并且该defCookie在所有设定时间段内都没有达到频次限制,则将当前defCookie赋值给minDefCookie;
重复c和d步骤,继续遍历所有优先级N+频次广告,最后返回minDefCookie。
进一步,所述方法还包括:上述返回的minDefCookie数据对象有效,则累加广告的展示次数并设置广告的展示时间,然后将该对象序列化为字符串后写入用户浏览器cookie;如果minDefCookie对象为null,则不对该次请求进行该广告的投放。
进一步,所述方法中的TheaterDefCookie数据结构包括以下内容:
lastShowTime:广告最近一次展示时间戳;
periodi(i=1,2,…n):广告的频次控制大周期中的子周期,以天为单位;
showTimesi(i=1,2,…,n):在子周期periodi内,某用户观看当前广告的次数;
expireDate i(i=1,2,…,n):对某个用户的子周期periodi的截止时间;endDate:对某个用户的周期截止时间。
此外,本发明还提供了一种控制网络视频广告投放频次及优先级的系统,该系统包括:视频播放器,用户通过浏览器点击其所载的播放器和播放视频信息,视频播放器发送广告请求,浏览器端的cookie会随着请求参数节目标识和广告位标识,即palyld和seq,一起被发送到广告系统;广告系统,根据请求参数palyld和seq,从广告缓存中找出满足定向投放条件的优先级N+频次广告集合;将从用户浏览器上取得的cookie信息通过反序列化重新还原为TheaterDefCookie数据结构对象数组defCookies,其中TheaterDefCookie的数据结构用于描述用户对优先级和N+频次广告的浏览历史;根据优先顺序遍历广告集合,并且根据获得的TheaterDefCookie数据结构对象数组defCookies选择一优先级N+频次广告在当前用户的浏览器端播放;更新TheaterDefCookie数据结构对象,广告系统对其进行序列化为字符串,以将用户浏览该优先级N+频次广告的历史信息以cookie方式存于用户浏览器上。
本发明具有以下优点:将用户信息进行结构化存储,并提供数据对象的序列化和序列化结果进行反序列化的方法,完成了用户信息的封装,这样既节约了有限的浏览器cookie资源,又简化了服务器端处理用户用信息的逻辑。
具体实施方式
为使本发明的上述目的、特征和优点更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明:
常见的N+频次广告控制是通过在用户浏览器上以cookie方式记录用户观看广告次数来实现的,cookie的value为一个数字,所作的控制功能非常有限,本发明则通过如下方式来实现广告优先级与N+频次控制的有效结合。
(1)定义一个命名为TheaterDefInfo的数据结构,用于描述前面描述的广告优先级和频次控制要求,在广告系统运行期间,这些优先级和N+频次控制信息会以TheaterDefInfo结构存在于广告系统的缓存中;
(2)定义一个命名为TheaterDefCookie的数据结构,用于描述用户对优先级和N+频次广告的浏览历史;
(3)利用对TheaterDefCookie数据结构对象进行序列化为字符串的方法,可以将用户浏览N+频次广告的历史信息以cookie方式存于用户浏览器上;通过反序列化(即对象还原)方法,将从用户浏览器上取得的cookie信息重新还原为TheaterDefCookie数据结构对象数组defCookies,以用于后面的广告校验。
(4)遍历优先级和N+频次广告集合,并根据当前用户TheaterDefCookie数据结构对象数组defCookies的信息来判断应该投放哪一个优先级和N+频次广告在当前用户的浏览器端播放。
参照图1,一次完整的广告请求流程可描述如下:
(1)用户浏览器请求广告时(注意:如果是视频广告,则实际是由浏览器中嵌入的视频播放器来发送广告请求),浏览器端的cookie会随着请求参数节目和广告位,即palyld和seq,一起被发送到广告系统服务器。
(2)广告系统根据请求参数palyld和seq,从广告缓存中找出满足定向投放条件的广告集合(特指优先级N+频次广告),根据优先顺序遍历广告集合,从中选择一个广告进行投放,选择策略如下:
a、优先级N+频次广告缓存说明:定时从广告系统缓存服务器加载广告,优先级高的广告排在前面,相同优先级广告随机排列该排列是根据TheaterDefInfo数据结构对象控制信息中的优先级信息level来排列;
b、定义一个TheaterDefCookie数据结构临时变量minDefCookie,来保存用户最早一次浏览的有效优先级N+频次广告信息,也就是要投放在当前浏览用户的优先级N+频次广告的cookie信息;
c、对缓存中优先级N+频次广告进行遍历,每个优先级N+频次广告都唯一对应一个TheaterDefInfo数据结构对象,取得一广告A,如果从浏览器cookie还原的TheaterDefCookie数组defCookies中不包括当前被遍历的广告A的cookie信息,则为广告A新创建一个新的TheaterDefCookie数据结构对象defCookie,并赋值给minDefCookie,然后跳出循环;
d、如果defCookies中包括当前广告A的cookie信息,则取得广告A的TheaterDefCookie数据结构对象defCookie;
如果defCookie的展示广告时间早于minDefCookie的展示广告时间,并且defCookie在所有设定时间段内都没有达到频次限制(通过TheaterDefInfo数据结构对象中的控制信息来判断),则将当前defCookie赋值给minDefCookie;
e、重复c和d步骤,继续遍历所有优先级N+频次广告,最后返回minDefCookie。
(3)上述返回的minDefCookie数据对象有效,则累加广告的展示次数并设置广告的展示时间,然后将该对象序列化为字符串后写入用户浏览器cookie;如果minDefCookie对象为null,表示遍历完整个广告库都找不到可投的优先级N+频次广告,则不对该次请求进行该广告的投放。
广告系统中每一个要求作优先级N+频次控制的广告,都会用一个唯一的TheaterDefInfo对象来描述其具体的优先级N+控制要求。图2是表示根据本发明的TheaterDefInfo数据结构的具体组成的示意图。
其中各个组成元素的含义分别如下:
●id:TheaterDefInfo对象的唯一标识,为整数(Integer);
●level:该优先级N+频次广告的优先级,越小越优先,为正整数(Integer);
●periodi和timesi(i=1,2,…,n):表示在整个投放周期之下的子投放周期,以天为单位,广告在每个子周期(periodi天)内最多能被同一个用户观看timesi次,periodi和timesi均为正整数(Integer),具体实现时候,每个periodi和timesi以key-value对的形式存放在HashMap<Integer,Integer>结构中;
●endDate:广告的N+控制投放的截止日期,超过该日期后,广告可以不必再遵守优先级N+频次控制要求,为日期类型(Date)。
用户观看每个优先级N+频次广告的历史信息都可以用TheaterDefCookie数据结构来描述,图3是表示根据本发明的TheaterDefCookie数据结构的具体组成的示意图。
其中各个组成元素的含义分别如下:
lastShowTime:广告最近一次展示时间戳,使用正整数(Integer)。
periodi(i=1,2,…n):广告的频次控制大周期中的子周期,以天为单位,为正整数(Integer);
showTimesi(i=1,2,…,n):在子周期periodi内,某用户观看当前广告的次数,为正整数(Integer);
expireDate i(i=1,2,…,n):对某个用户的子周期periodi的截止时间,为便于在广告投放时与当前时间相比较,expireDatei使用正整数(Integer)。
endDate:对某个用户的周期截止时间,使用正整数(Integer)。
每个用户在观看一个优先级N+频次广告时,广告系统都会更新该用户观看该广告的全部历史信息,这些信息是以TheaterDefCookie数据结构存放在广告系统服务器端的,当TheaterDefCookie被更新后广告系统将TheaterDefCookie对象序列化为一个字符串,然后通过向用户浏览器写cookie的方式将这个字符串存入用户浏览器端。图4是根据本发明将TheaterDefCookie对象序列化为字符串的示意图。
TheaterDefCookie的还原则是服务器对从cookie中取得的上述格式的字符串进行拆分和解析,然后重新构造TheaterDefCookie实例的过程。图5是根据本发明将字符串还原为TheaterDefCookie对象的示意图。
实施例一:上海某知名化妆品客户的广告A1投放。
广告A1投放周期是:2012-03-01~2012-03-25,优先级为1,要求每个用户每天最多只能看到该广告3次,每5天最多只能看到10次。
同时还有其它优先级N+频次广告:
优先级为1的广告还有B,每个用户每天最多展示3次,
优先级为1的广告还有C,每个用户每天最多展示3次,
优先级为2的广告D,每个用户每天最多展示3次,
优先级为2的广告E,每个用户每天最多展示5次,
下面是具体实施步骤:
(1)首先在广告系统的相关表中创建该广告A1的记录,并设置该广告对应的各项属性,以及N+限制信息。
(2)实际投放时,所有当前待投的N+广告的频次限制信息都会被从数据库中提取出来,并分别为它们创建一个TheaterDefInfo实例。如广告A1对应的TheaterDefInfo信息结构如图6所示。
(3)当广告系统遍历所有的优先级N+频次广告,与用户浏览器端传来的广告优先级N+频次相关的cookies信息进行比较,比较逻辑见图1;如果当前匹配上广告A1,将A1相关的cookie信息其还原为一个TheaterDefCookie对象minDefCookie,如果未找到,则为A1创建一个TheaterDefCookie对象。
例如,广告系统接收到某次广告请求时所得到的浏览器cookie中A1的值为“1330669550359:1332656700000_1:1:1330756100000_5:3:133092900000”,将其还原为某个TheaterDefCookie对象后,其结构如图7所示,它表示:广告A1当天已经观看1次,最近5天之内已经观看3次,其中长整数1330756100000、133092900000分别为1天和5天这两个子周期的截止时间点2012-03-03 00:00:00和2012-03-05 00:00:00,根据前者可推断出当天是2012-03-02日,后者可推断出从目前日到2012-03-05当天,用户总共看了这个广告3次,并将于5天后的2011-10-06日零点结束该子周期,该子周期内浏览次数会被清空,然后重新开始下一个5天的频次统计。
根据流程图1,可以发现该用户:当天观看次数1次小于1天内允许观看的次数上限3次,5天内观看次数3次也小于5天内最多允许观看的次数10次,所以本次广告请求校验结果是:TRUE,即广告A1可以投给该用户。
下一次,该用户向广告系统请求广告,如果广告B和广告C还有没投放完毕,则根据广告选择流程图1,不再选择广告A1,而可能是广告B或者广告C;
再下一次,该用户向广告系统请求广告,如果广告B和广告C还有没投放完毕,则根据广告选择流程图1,不再选择广告A1,而可能是广告B或者广告C;
再下一次,该用户向广告系统请求广告,不管广告B和广告C是否投放完毕,则根据流程图1,选择广告A1;
如果广告系统优先级N+频次广告,优先级1只有三只广告A1、B、C有满足投放条件,则广告出现的次序可能是:
A1--B--C--A1,A1--C--B--A1,
B--A1-C--B,B-C--A1--B,
C--A1--B--C,C--B--A1--C,
只有当上优先级为1的广告全部投放完后,才可能投放优先级为2的广告,投放广告的选择流程同上。
实施例二:某客户的广告A2投放。
广告投放周期是:2012-03-01~2012-03-25,优先级为2,要求每用户每天最多只能看到该广告2次,每周最多只能看到8次,每10天最多只能看10次。
同时还有以下优先级N+频次广告:
优先级为1的广告还有B,每个用户每天最多展示3次,
优先级为1的广告还有C,每个用户每天最多展示3次,
优先级为2的广告D,每个用户每天最多展示3次,
优先级为2的广告E,每个用户每天最多展示3次,
广告A2对应的TheaterDefInfo信息结构如图8所示。
比较逻辑见图1,当广告系统找到可匹配当前请求的广告A2,然后会提取用户浏览器端传来的广告A2相关的cookie信息。例如,从某用户浏览器端提取到的浏览器cookie信息结构为“1330669550359:1332656700000_1:1:1330756100000_7:3:1331109300000_10:3:1331368500000”,将其还原为某个TheaterDefCookie对象后,如图9所示,图9是表示根据本发明实施例2的TheaterDefCookie数据结构一个实例的示意图。
对上述TheaterDefInfo和TheaterDefCookie进行校验,可以发现该用户:1天内观看次数、7天内观看次数,和10天内观看次数均未达到各周期上限,广告A2可能被投放;
当优先级为1的广告全部投放完成后,即B、C广告全部投放完后,才会投放优先级为2的广告:
对同一个用户,出现的次序可能是:
A2--D--E-A2,A2--E--D-A2,
D-A2-E--D,D-E-A2--D,
E-A2--D--E,D--E-A2-D。
以上是对本发明的优选实施例进行的详细描述,但本领域的普通技术人员应该意识到,在本发明的范围内和精神指导下,各种改进、添加和替换都是可能的。这些都在本发明的权利要求所限定的保护范围内。