在地铁或商场走道上经常会看到墙面长方形的广告牌,它们总会是吸引人目光,使得我们去多看一眼:绚丽的色彩,突出的文案,无论行路多么匆忙。
这类的广告即是横幅广告,在互联网产品当中,我们称之为banner图
1.背景
相信在市面上有不少产品都设计了banner图,比如,淘宝,京东等,
在我涉及到的所有项目中都涉及到了这个banner,它最主要的作用是曝光流量,宣传为主要目的,
通过banner轮播图,曝光产品宣传语,app内部分业务或者其他宣传其他app广告,例入淘宝的banner推广商品/店铺等,例如最近的网易的banner推广的是年度歌单总结。
图示1(app中banner图)
2.banner轮播图业务分析
由于banner业务对于绝大数人来说,是非常容易的:
- banner轮播可分为视频/图片(绝大多数情况下不建议采用视频的方式)。
- banner的点击类型可分为app内部,h5页面,无操作等。
- 每个banner的展示时长是不一样的(根据banner内容,展示的时长应该有所调整)。
- banner 的展示时间段,比如展示时间为2021年1月1日19点到2021年1月2日18点
图示2:
3.方案以及规划
1)目标: 考虑到逻辑的简单性,主要制定以下几个方向
- 在首页数据当中的banner,请求相对比较频繁,保证并发
- 架构的设计与方案
在本业务中主要就涉及到缓存系统,业务系统以及数据库,
利用缓存系统解决请求数过多问题,so easy!
当客户端请求到服务器时候,对应的业务系统从缓存系统中读取,如果缓存系统中的不存在就从数据库内读取,非常简单。
涉及到缓存,有本地缓存和缓存服务,如果不在乎那么几分钟的延迟,考虑本地缓存是非常可取的,例如java中的Caffeine框架。
图示3:逻辑设计图
4.数据库表设计
banner info 表
字段 | 数据类型 | 说明 |
---|---|---|
id | bigint(20) | 主键 |
type | tinyint(2) | banner的类型(1视频,2图片) |
status | tinyint(2) | 上下架状态(0下架,1上架) |
banner_url | varchar(512) | banner的url路径 |
duration_time | int(11) | 展示时长(以秒为单位) |
jump_type | tinyint(2) | 跳转类型(0不调转,1站内,2网页) |
data | varchar(1024) | 附加数据(例如配置站内跳转的路径或者网页跳转的url) |
start_time | datetime | banner的开始时间 |
end_time | datetime | banner的结束时间 |
create_time | datetime | 创建时间 |
update_time | datetime | 修改时间 |
is_delete | tinyint(2) | 是否删除(1是0否) |
5.结语
banner的业务逻辑设计非常简单,至今也鲜有产品对banner有大大的改进,当然电商类产品对banner的个性化推荐
也是非常有趣的。但是这背后是多少运营人员在后面辛勤的付出啊