博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Facebook是如何缩短iOS应用启动时间的
阅读量:7120 次
发布时间:2019-06-28

本文共 802 字,大约阅读时间需要 2 分钟。

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

\\

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

\\

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

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

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

\\

\"\"

\\

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

\\

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

\\

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

\\

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

转载地址:http://bksel.baihongyu.com/

你可能感兴趣的文章
InitGoogleLogging坑爹
查看>>
SQL 查询间隔时间大于60s的所有数据
查看>>
*ecshop 限制文章帮助文章显示条数
查看>>
使用phpStudyy运行tipask
查看>>
c# 常用函数
查看>>
网络TCp数据的传输设计(黏包处理)
查看>>
C++ Custom Control控件 向父窗体发送对应的消息
查看>>
二十四 多重继承
查看>>
jmeter压力性能测试-多台机器并发请求
查看>>
选择编程字体
查看>>
小程序日常工作总结
查看>>
mySql学习笔记:比sql server书写要简单
查看>>
ajax封装
查看>>
例题9-6 UVa11400 Lighting System Design(DP)
查看>>
PAT1087 All Roads Lead to Rome (30)(最短路径+dfs+回溯)
查看>>
Arcgis Engine 添加一个Symbol符号样式步骤
查看>>
kafka 控制台命令
查看>>
alpha冲刺10
查看>>
睡觉了~~
查看>>
【LeetCode】28 - Implement strStr()
查看>>