写点什么

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

  • 2015 年 12 月 09 日
  • 本文字数:743 字

    阅读完需:约 2 分钟

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

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

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

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

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

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

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

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

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

2015 年 12 月 09 日 18:004518
用户头像

发布了 1008 篇内容, 共 331.1 次阅读, 收获喜欢 301 次。

关注

评论

发布
暂无评论
发现更多内容

Java8引入新的日期和时间库,你应该知道

Silently9527

java8

四、应用系统探讨

Geek_28b526

LeetCode题解:169. 多数元素,哈希表,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

架构师训练营 W04 作业

Geek_f06ede

极客大学架构师训练营

腾讯强推Redis大神之路成长手册!原理+应用+集群+拓展+源码五篇齐飞

Java架构追梦

Java 数据库 redis 架构 面试

架构师训练营第 1 期第 8 周作业

好吃不贵

极客大学架构师训练营

一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述

幸福小子

互联网系统架构

苏州崛起为我国区块链产业高地

CECBC

区块链 社区矫正

推荐好书:《使用Python进行图像处理和采集》第二版(附下载方式)

计算机与AI

Python 图像处理

架构师训练营 week4 学习总结

花果山

极客大学架构师训练营

极客时间架构师训练营 1 期 - 第 8 周总结

Kaven

产品发布 | 准备好提升你的 ITSM 了吗?

Atlassian

DevOps Atlassian ITSM ITIL

年轻人的第一个MyBatis项目就要这样来学习,不走弯路

小Q

Java 学习 架构 面试 mybatis

「八大排序算法」16张图带你彻底搞懂基数排序

bigsai

排序算法 基数排序

week4学习小结

幸福小子

互联网系统架构

第四周课后练习作业一

lithium

极客大学架构师训练营

ebay支付核心账务系统架构演进之路

贾奇 (Jacky)

支付系统 共识机制 系统稳定高可用 Event Sourcing 异地多活容灾

脱钩!打工人不配拥有Java程序员306道面试秘笈吗?真香

996小迁

Java 学习 架构 面试 笔记

架构师训练营 week4 课后作业

花果山

极客大学架构师训练营

Architecture Phase1 Week8:HomeWork

phylony-lu

极客大学架构师训练营

架构师入门学习感悟四

莫问

架构师训练营第 4 周课后练习

菜青虫

极客大学架构师训练营

架构师训练营第 1 期 -- 第八周作业

发酵的死神

极客大学架构师训练营

区块链治理的真实价值在哪里

CECBC

区块链 治理 治理机制

极客时间架构师培训 1 期 - 第 8 周作业

Kaven

架构师训练营第 1 期 -- 第八周学习总结

发酵的死神

极客大学架构师训练营

分分钟玩转SpringBoot自定义注解

比伯

Java 大数据 编程 架构 编程语言

架构师训练营 - 第 8 周课后作业(1 期)

阿甘

Architecture Phase1 Week8:Summarize

phylony-lu

极客大学架构师训练营

架构师训练营第 4 周学习总结

菜青虫

极客大学架构师训练营

架构作业--相交链表

Nick~毓

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