BT

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

Facebook经验:如何保证不同网络环境下的应用体验

| 作者 郭蕾 关注 9 他的粉丝 发布于 2014年9月26日. 估计阅读时间: 4 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

在刚刚结束的@Scale 2014大会上,Facebook分享了关于移动应用适配方面的演讲,High Scalability在相关演讲的基础上进行了整理。如何保证移动应用在不同的网络环境、不同的屏幕上都有良好的用户体验一直是个难题,而Facebook有遍及全球的用户,他们一直致力于提高用户体验,在大会上,Facebook重点从团队、技术方面分享了他们的经验。

一开始,Facebook的应用只针对拥有高配置设备的用户,在低配置设备上,应用体验非常糟糕。而根据调查显示,很多Facebook用户使用的手机都是在2011年左右生产、双核心、内存小于1GB。紧接着,为了满足这部分用户的需求,Facebook专门开发了单独的应用,这些应用在动画切换等方面都做了特殊处理。对于小屏幕的手机,Facebook也专门设计了适配的应用。根据API等级、屏幕大小的不同,Facebook应用有20多个不同的APK(Android)。

在团队方面,Facebook以产品为中心来组织团队。每个产品都对应一个单独团队,这个团队负责保证产品的性能以及可靠性。另外会有单独的核心团队负责发现、分析并解决性能方面的问题。核心团队和产品团队各司其职,互相促进。

由于地区的差异,Facebook用户的网络环境各不相同,所以访问Facebook应用的延时也各不相同。为了避免由于网络延迟而影响用户体验,Facebook主要做了三方面的工作,具体如下:

  1. 减小图片大小(使用WebP格式的图片)
    大部分的Facebook应用数据都是图片,因此减少图片的大小就可以较少数据的下载量,从而加快下载速度,这一点在高延迟的网络环境下非常重要。Facebook返回给客户端的图片都做了压缩处理,图片压缩方面业内主要使用gzip压缩,常见的服务器都支持gzip压缩。另外,Facebook大规模使用了WebP格式的图片,WebP是谷歌推出的一种新的图片格式,可以将图片大小减少40%,目前淘宝也有使用这种格式的图片。WebP不仅可以大幅度减少图片大小,而且还支持透明度和动画。对于一些不支持WebP的设备,Facebook会在客户端把它转码为JPEG格式的图片。

    前不久,Facebook也赞助了来自Mozilla实验室的JPEG图像编码器项目mozjpeg,它可以在不降低图像质量且兼容主流的解码器的情况下,提供产品级的JPEG格式编码器来提高压缩率以减小JPEG文件的大小。感兴趣的读者可以尝试使用。

  2. 网络质量检测
    Facebook在每个响应的的HTTP头中都提供了RTT(Round Trip Time)估算,客户端根据平均吞吐量和RTT时间来确定网络连接的质量。网络连接质量会大致被评为几个级别:优秀、良好、一般、差。开发人员针对不同的网络连接级别来调整相应的功能,比如增加/减少压缩调整并行的请求数量、禁止/允许自动播放视频、预加载内容。另外,Facebook还专门开发了Air Traffic Control以支持不同网络环境下的配置文件模拟。

  3. 预加载内容
    预加载可以使用空闲时间来预先下载/加载用户接下来很可能会浏览的资源,在高延迟的网络环境下,内容预加载可以减少用户的等待时间。比如在网络连接不好的情况下,Facebook会在应用启动时加载基础数据。使用预加载内容方案时要注意不要让后台网络请求阻塞正常的网络请求,这块Facebook主要使用了一个优先队列来存储请求。

目前,相关的演讲也已经发布到了YouTube,读者可以自行观看。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个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