背景
当前美团开屏广告存在问题:
- CPM优先级较低:开屏流量优先级分配为 平台大促>CPT>运营活动>CPM,且前三者占比很大,难以轮到CPM展示
- CPM展示成功率较低:CPM广告实时性较高,所以即使已经预加载到用户手机中,在曝光前仍需要校验,确认是否可以展示,但该接口返回的成功率很低
开屏展示机制
- 用户在打开时,会将运营活动以及广告,预加载到用户手机中,不在这一次打开时展示
- 用户再次打开时,会根据优先级的顺序去展示缓存在本地的广告,其中CPM需要曝光前校验,确认是否仍有预算、仍在投放列表中等信息,校验通过则展示,否则不展示
产品侧优化方案
解决的问题 | 解决方案描述 | 需求承接方 |
---|---|---|
CPM优先级低 | 调整优先级,30%下CPM>运营活动 | 玲珑 |
CPM实时校验成功率低 | 不做实时校验,缓存直接展示,超播流量不计费 | 广平 |
控制预加载比例 | 控制预加载比例 | 广平 |
广平侧方案
预加载控制策略
- 放弃实时请求流程,仅通过预加载加载广告
- 控制预加载量级,基本思路是通过控制单个广告的预加载量,来控制其实际曝光量
投放时长 | 时间点 | 方案 |
---|---|---|
非持续投放 | T-1无效 | 最大预加载量=系数k×有效投放天数 ×日最大曝光量 |
T-1有效 | 1. T-1预算消耗比C≥90%,停止预加载 2. 10%≤C≤90%,继续预加载,新增预加载量=已预加载量×(1-C)/C,(已预加载量=totalPreloadCnt-todayPreloadCnt) 3. C<10%,继续预加载,最大预加载量=系数k×有效投放天数 ×日最大曝光量 |
|
持续投放 | T-1无效 | 最大预加载量=系数k×5天 ×日最大曝光量 |
T-1有效 | 1. T-1预算消耗比C≥90%,停止预加载 2.10%≤C≤90%,继续预加载,新增预加载量=已预加载量×(1-C)/C,(已预加载量=totalPreloadCnt-todayPreloadCnt) 3.C<10%,继续预加载,最大预加载量=系数k×5天 ×日最大曝光量 |
解释:
- T-1预算消耗比C≥90%,停止预加载:说明T-1广告主投放金额消耗率很高,动态调整预加载,防止后面的超播
- 为什么是已预加载量×(1-C)/C,这样如果C较小,那么继续加载量级会大,C较大,继续加载量级会小,很好
备注:
预算消耗比:实际消耗的预算/广告主投入的金额
有效投放天数=min(投放天数,预加载天数+1),之所以是预加载天数+1,是因为今天展示的其实是-n天加载的广告,今天仍有预加载过程
- 投放天数:在今天到未来preloadday内,结合launchtime计算得,比如今天是5号,preloadday=5,launchtime=3-5,7-8,10-14,则投放天数为4(5,7,8,10)
日最大曝光量=当日预算/出价
持续投放是指投放时长未做限制的投放
一个开屏广告的预加载过程:从投放成功到创建索引开始进行预加载,至实际预加载量>=最大预加载量或T-1有效为止
T-1是否有效的逻辑为:begintimestamp是否≤昨天凌晨,表示广告投放的开始时间是否早于昨天凌晨,以此判断昨天是否有预加载
过滤逻辑
详细改动点
- 业务层引入中间件记录预加载情况
- 检索层基于规则控制预加载量级
数据存储方式
- 当日预加载数量:
- key格式:投放id+当日距离1970-1-1的距离
- value:计数
- 过期时间:两天
- 总预加载量:
- key:投放id+0
- value:计数
- 过期时间:一年
上线观察
指标:
- 超播比例:如果过高,说明量级宽松
- 预算消耗比:如果较高说明量级合适
- 是否有实时请求的曝光:是否成功放弃了