BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Facebook是如何缩短iOS应用启动时间的

| 作者 Sergio De Simone 关注 17 他的粉丝 ,译者 谢丽 关注 11 他的粉丝 发布于 2015年12月10日. 估计阅读时间: 2 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

Facebook工程师Natansh Verma阐释了他们如何将Facebook iOS应用的启动时间缩短了几秒钟。

据Verma介绍,他们在优化启动时间时所采取的第一个步骤是定义一个稳定的指标。对他们而言,他们发现订阅加载完成的时刻是一个很好的参考,可以视为启动进程完成的时间。此外,他们决定优化所谓的“冷启动”,也就是一个完全没有运行的应用的启动时间,与热启动(应用已经在后台运行,某个事件将其带至前台)相比,它可以提供更大的调整空间。

Facebook工程师通过检测发现,会发出第一次订阅请求的初始化阶段耗时太长。他们从以下两个方面进行了处理:

  • 通过分析,删除第一次网络请求之前不必要的依赖项,仅保留所必需的有效身份验证令牌和订阅游标;
  • 借助一种他们称之为UDP priming的技术减少建立安全TCP连接(需要三次服务器往返通信)的时间。简单来说,应用会向服务器发送一个加密过的UDP数据包,其中包含订阅请求。这可以提示服务器将会有一个真正的TCP请求到达,那样服务器就可以提前获取和缓存数据。

重要通知:接下来InfoQ将会选择性地将部分优秀内容首发在微信公众号中,欢迎关注InfoQ微信公众号第一时间阅读精品内容。

在确保最初的订阅请求尽早发出之后,Facebook工程师确定的另外一个改进项是故事获取策略。那就是,他们将用两个批次(第一批次3个,第二批次7个)提供故事改为一种更像流的模型,即按1+1+X提供故事。

有意思的是,第一个故事返回时间缩短使得一些应用服务的部分资源争用情况突显,降低了渲染引擎的速度。这个具体问题是通过引入一种队列机制解决的,所有那些服务在应用启动完成后才开始执行。

Verma表示,那些优化总共将应用的启动时间缩短了几秒钟。

移动应用的启动时间是用户体验的一个重要方面,苹果一直建议尽可能的缩短启动时间,防止用户不愿意使用它们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT