作者简介
携程前端框架团队,为携程集团各业务线在PC、H5、小程序等各阶段提供优秀的Web解决方案。产品涉及各类前端/Node端应用框架、研发工作台、前端中台化、静态资源发布系统等。当前主要专注方向包括:新一代研发模式探索,Rust构建工具链路升级、Serverless应用框架开发、在线文档系统开发、低代码平台搭建、适老化与无障碍探索等。
一、背景
众所周知,无论是微信小程序、支付宝小程序或者其他类型的小程序,代码包都是有大小限制的。目前微信官方规定,整个小程序不超过20M,单个分包或主包大小不超过2M。之所以这样限制,是对小程序启动速度的考虑,微信希望用户在使用任何一款小程序时,都能获得一种”秒开“体验,这也正是小程序的优势所在,但同时也对开发人员提出了更高的要求。
携程小程序涉及30+条业务线,上百个开发人员,目前包体积已经向着微信限制的20M迈进,包体积过大必将导致新增业务受限、启动慢等问题,这些都给用户带来了不好的使用体验,因此对Size的治理势在必行。
为了能够合理有效的利用有限的Size,我们设计了一套自己独有的Size治理方案,如图1所示:
图1 携程小程序Size治理
二、Size监控机制
2.1 Size分配
在《携程微信小程序如何协同开发》一文中我们提到过,携程将整个小程序划分数十条业务线(即Bundle),每个Bundle可以拥有多个分包。我们为每个Bundle设置一个约定好的阈值,该值包括两部分:永久Size + 临时Size。顾名思义,永久Size是Bundle的固有Size,临时Size是指到了约定日期将自动回收的Size,这些信息都在小程序管理平台系统中进行配置,如图2所示:
2.2 Size检测

2.3 Size申请审批

2.4 Size提醒
含有临时Size的Bundle; 临时Size到期的Bundle; Size超限的Bundle。




3.1 主包文件管理
小程序管理平台提供了对主包文件的可视化管理功能,主包文件的查看、增加、删除操作均可在管理平台上进行配置,如图9所示:
图9 主包文件管理
通过管理平台,我们可以快速获取主包中的文件内容以及文件的归属情况,配置后的数据将作为参照用于主包文件的检查。
3.2 主包文件检查
每当代码提交进行pipeline构建时,我们会通过微信的规则筛选出可能会打包到主包中的文件,将该列表与小程序管理平台上配置过的主包文件列表进行对比,如果存在未配置过的文件,会强制中断构建过程,并将构建结果发送至相关发布群即开发人员,以此实现主包文件的管理,报错信息如图10所示:
图10 主包文件检查
通过对主包文件进行清理,并对主包中的文件进行严格限制之后,主包Size下降了46.5%,如图11所示,目前已趋于稳定状态。主包管理机制防止业务线随意向主包中添加文件,做到了可感知、可控制,同时对提升首屏渲染性能有着重大意义。

三、总结

“携程技术”公众号
分享,交流,成长
文章转载自携程技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。