基于Weex的双十一会场搭建之路

简介: 在2017年1月12日 Weex Conf 2017上,来自来自阿里巴巴天猫事业部的伯禹带来了题为“基于weex的双十一会场搭建之路”的演讲,本文从大规模会场的挑战开始引入讨论,然后讲解了大规模会场的电商解决方案,接着分析了Weex与搭建体系的融合,最后重点分享了Weex会场秒开的实现过程,并简要进行了总结。

在2017年1月12日 Weex Conf 2017上,来自来自阿里巴巴天猫事业部的伯禹带来了题为“基于Weex的双十一会场搭建之路”的演讲,本文从大规模会场的挑战开始引入讨论,然后讲解了大规模会场的电商解决方案,接着分析了Weex与搭建体系的融合,最后重点分享了Weex会场秒开的实现过程,并简要进行了总结。

以下是精彩内容整理:

 

大规模会场的挑战

  • 2016双十一期间,天猫业务共上线1200+个会场,总计3500+张页面;
  • PC、H5、Native(iOS + Andriod) 全终端覆盖;
  • 一天一小促,一周一大促,月月双十一;
  • 营销活动业务特点:高频度、大规模、多终端。

面对这么庞大的规模、频繁的运营节奏,我们在业务成本和研发效率上遇到了很大的挑战。

 

大规模会场解决方案

会场页面重表现、弱交互,大部分采用单栏布局形式,都是块状的内容形态。基于这样的特性,我们整理出思路及目标。

  • 思路:以模块化方式解构页面;基于模块,以搭积木的方式制作页面。
  • 目标:面向普通运营人员,实现可视化搭建;页面从搭建到上线,0开发资源投入。

163b1e828016d5619e9f3d9714f614ce4dcf6b41

假设每一个内容都是一个模块,模块主要由四部分元素组成:javascript+css、xtpl模板、JSON Schema以及模块描述信息。

与传统模块化设计理念不同的是,我们在设计之初就想到要做多终端支持,做到数据与模板分离,多终端数据共享。

a26b9dd607e15f631ee1c9bbe0cb68ce6806b505

图为大致的页面上线流程。从搭建平台开始,做模块设计拼装页面,然后将页面模板和页面数据推送到云存储服务中,同时产生页面url,当拿到url进行访问时,会路由到源站。

dc4f1c6de55f4246035b7ad33c79b114e3267c9d

后台可以清楚的看到页面是由若干模块组装而成,可以在后台进行模块的添加、删除、移动等,同时,我们提供一套所见即所得的数据可视化编辑,当一个业务场景下需要调整页面中某一块内容时,只要点击对应位置,就会呼出对应数据集。

搭建平台后的运行效果如下:

  • 2016双十一,天猫业务99%的会场基于可视化搭建;基于100个模块共搭建出1200+个会场;
  • 经过一年多的运行,天猫业务在搭建平台沉淀了了600+个模块,覆盖天猫90%的日常营销活动;
  • 日常营销活动,前端资源投入:0。

 

Weex与搭建体系的融合

模块的多终端支持,可以支持PC、H5、Native。

f329a1bf5fa04bea6e27880bd11a675c40f751f4

基于Weex的native端模块设计如图,在模块进行构建后,我们会把它转化成一份JS Bundle,才会真正保存到入口文件里。通过这样的设计,我们做到了一次搭建,产出三端,并且三端的url是同一个。

 

Weex会场秒开的分析与实现

e843a51751f0b5192f15d5a5cf7edacb24acb2c7

秒开是指1秒内页面首屏达到可交互状态,即页面加载时间 + 首屏渲染时间 ≦ 1s。

b566dd0785c0d6dec6137793dea43e1e5bce6597

围绕着渲染链路过程,我们针对每一个节点都设计了对应的优化策略。

网络链路优化

8dd8f218954a18d707611c75151af2c1dfd0936d

HTTPDNS是基于HTTP协议面向无线端域名解析服务,它的优势是防止域名劫持,更精准的调度,更小的解析延迟和波动,额外的域名相关信息。

37141fdee419d0f1af358a10c47fd6a1c32ea59d

HTTP/2是全双工数据流多路复用,可以显著提升网络传输效率,目前天猫大多数域名都支持HTTP/2。

资源下载优化

18a7d6398acbed1a48ddbc5f11150ec38811ee07

资源预加载是实现秒开的核心手段,用户访问前,将页面静态资源打包提前下载到客户端;用户访问时,将网络IO拦截并替换为本地文件IO。页面是在搭建平台产出,搭建平台要负责对页面静态资源进行打包,通知客户端更新,实现整条链路的串通。

dc8694a76ed6316038da0fb930ea6307a83d99a1

图片自适应是根据用户端信息(设备DPI,网络状况,WebP支持等)加载最合适的图片,主要利用CDN能力,CDN提供图片裁剪、压缩等,且都不要事前进行,只需在图片请求时添加固定的后缀就可达到一定的效果。

页面渲染优化

页面渲染优化有以下四个建议:

1. 优先使用<list>;

2. 尽可能细粒度拆分<cell>;

3. 首屏优先渲染;

4. 尽可能减少dom层级。

071576d08c2c902baf58fe8e8448f96bd3737c10

大部分的无限页面采用滚屏的方式,我们提供两个组件scroller和list。Scroller支持垂直滚动,所有子组件一次性渲染;而list也支持垂直滚动,仅渲染可视区域的子组件,且子组件移出可视区域后内存回收。所以,优先选用list。

1e959eb97431dbc6cce59404f5f6ccdf8e9eab58

尽肯能细粒度拆分<cell>,优化原理如下:

1. 过大的cell如果仅部分内容移出到可视区域之外,不会进行内存回收。粒度越小,内存利用率越高。

2. cell与cell之间独立渲染,且cell默认以tree的模式解析。粒度越小,内容呈现越快。

a7fff64d8387a8dfba0ea8af05c7c93f887727cd

首屏优先渲染:

1. 拆分页面:首屏 + more,首屏首先渲染;

2. 通过loadmore事件初始化首屏以下模块。

 

总结

双11期间天猫业务:

• 总计上线1200+会场,其中支持Weex的会场占比99.6%;

• 强网环境下(wifi+4g),weex会场秒开率均值到达84%。

双十一期间Weex使用状态达到了高效率、高性能、高可用的效果。在效率层面,通过页面可视化搭建的设计,来大面积的提升业务生产率,释放了开发资源;性能层面,通过网络链路的优化,实现秒开率84%的效果;可用性层面,会场覆盖率达到99.6%。

 

相关文章
|
12月前
|
监控 前端开发 rax
SSR在天猫优品大促会场的探索实践
BBC 发现其网站加载时间每增加一秒,用户便会流失 10%。为提高页面的秒开率,我们不断探索着优化策略,仅仅在浏览器领域下的优化已经满足不了我们的极致要求,开始往服务端方向不断探索。本文将讨论业务接入SSR的几个问题: 1.SSR究竟适合哪些业务? 2.接入SSR后,性能带来了哪些提升? 3.业务接入SSR有哪些成本?
132 0
|
12月前
|
移动开发 缓存 搜索推荐
淘宝首页大促新玩法“猫头”背后的技术挑战和设计
本文详细介绍了淘宝首页大促新玩法“首页即会场”项目,从开放模式、复用粒度、交互实现、性能、可扩展性等技术角度来说明“猫头”是怎样炼成的。
259 0
|
缓存 运维 监控
serverless 案例 | 互娱 网易云音乐
serverless 案例 | 互娱 网易云音乐
127 0
serverless 案例 | 互娱 网易云音乐
|
存储 缓存 监控
闲鱼玩法平台系列文章——双11实操篇
你的就是我的,我的还是我的~
2284 0
闲鱼玩法平台系列文章——双11实操篇
|
缓存 前端开发 JavaScript
双十一会场体验 SSR 优化 - 走向更复杂的渲染架构
今年(2020)我们在不改变现有架构,不改变业务的前提下,在会场上使用了 SSR 技术,将秒开率提高到了新的高度(82.6%);也观察到在用户体验得到优化的同时,业务指标如 UV 点击率等也有小幅的增长(视不同业务场景有不同的提升,最大可达 5%),带来了不错的业务价值。
双十一会场体验 SSR 优化 - 走向更复杂的渲染架构
|
双11
双十一大促即将抵达,速速戳!!!
双十一即将到来,云大使仅剩下7天升级!!!
9557 0
|
双11 开发者 自然语言处理
阿里双十一,是怎么做到的?
2017年11月11日晚上10点,阿里巴巴集团 CTO 张建锋(花名:行癫)连线上海双11媒体中心,为700多位中外媒体记者介绍了阿里技术在双 11 中取得的突破与成绩,表示“阿里双 11 是名副其实的世界互联网技术超级工程。”
1060 0
|
开发者 运维
十年磨一剑:淘宝如何打造承载亿级流量的首页? | 开发者必读(041期)
最炫的技术新知、最热门的大咖公开课、最有趣的开发者活动、最实用的工具干货,就在《开发者必读》!
1452 0
|
开发者
抓住流量红利:微信小程序的定制开发
微信小程序的定制开发越来越火,新的风口下,如何抢占这波流量红利?
1067 0
|
算法 前端开发 双11
第一期优酷技术沙龙——双十一背后的技术实践
欢迎来到由优酷技术主办,LiveVideoStack联合出品的优酷技术沙龙——双十一背后的技术实践。本沙龙将从多维度分享优酷技术在保障和提升双十一及双十一晚会体验方面的经验,期待与业界同仁进行碰撞交流。
2645 0