在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

  • 2014-09-25
  • 本文字数:1315 字

    阅读完需:约 4 分钟

在刚刚结束的 @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,读者可以自行观看。

2014-09-25 04:452684
用户头像

发布了 219 篇内容, 共 152.6 次阅读, 收获喜欢 195 次。

关注

评论

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

「AI 共创・三生万物 」司马阅2025企业AI落地应用峰会杭州站落幕,多领域行业先锋共探企业AI落地破局路径

司马阅

YashanDB升级迁移过程中减少风险和提高效率

数据库砖家

YashanDB全链路监控的技术思路与实践

数据库砖家

2025 OSCAR丨与创新者同频!Apache RocketMQ 邀您共赴开源之约

阿里巴巴云原生

阿里云 RocketMQ 云原生

国产数据库的AI战事

脑极体

AI

YashanDB数据库实时数据处理的核心优势分析

数据库砖家

YashanDB数据库实时数据流处理的实用指南

数据库砖家

华为擎云亮相第86届中国教育装备展示会,“双真双易”场景化方案推动教育数字化

科技大数据

YashanDB数据库日志压缩与存储优化技术研究

数据库砖家

扛起技术大梁的零售校招生们 | 1024技术人特别篇

京东零售技术

YashanDB数据库日志管理和审计策略的详细解析

数据库砖家

阿里云DLF 3.0:面向AI时代的智能全模态湖仓管理平台

阿里云大数据AI技术

阿里云 LakeHouse DLF

轮次检测模型 VoTurn-80M 开源,多模态融合架构;OpenAI 收购桌面助手 Sky:实时识别屏幕自然语言交互丨日报

RTE开发者社区

我们做了一个让AI开发者「真香」的数据库- Relyt ONE

AI数据云Relyt

全文检索 postgres #数据分析 #向量数据库 #OLAP

YashanDB数据库如何助力智能制造与工业0

数据库砖家

YashanDB数据库日志压缩技术提升存储效率的实战建议

数据库砖家

YashanDB数据库升级流程及版本兼容性注意点

数据库砖家

YashanDB数据库实施项目的全流程管理经验

数据库砖家

YashanDB数据库实现数据共享的最佳实践方法

数据库砖家

ETLCloud数据集成平台:破解制造业数据困局的智能引擎

谷云科技RestCloud

数据传输 数据同步 ETL 数据集成平台

openvela首届全球开发者大会圆满落幕,NuttX创始人Greg亲临现场,共话AIoT生态

新消费日报

大模型 | VLA 初识及在自动驾驶场景中的应用

地平线开发者

自动驾驶; 算法工具链 地平线征程6

三种 Badcase 精度验证方案详解与 hbm_infer 部署实录

地平线开发者

自动驾驶; 算法工具链 地平线征程6

吉利汽车携手阿里云函数计算,打造新一代 AI 座舱推理引擎

阿里巴巴云原生

阿里云 Serverless 云原生 吉利汽车

百度百科词条总量突破3000万,联合《大学科普》等多机构推出科普专刊

科技大数据

YashanDB数据库设计的核心原则与技巧

数据库砖家

大模型时代的广告营销变革与实践

京东零售技术

绿电直连与绿电直供的区别:数字化平台与物理通道的跨界对话

西格电力

新能源产业 电力交易 电力系统 绿电直连 绿色低碳发展

工业管理 项目管理经验总结(27)

万里无云万里天

项目管理 工业 工厂运维

AI研究-110 DeepSeek-OCR 原理剖析|上下文光学压缩、Gundam 动态分辨率与并发预期 附代码

武子康

深度学习 AI 大模型 AIGC DeepSeek

Facebook经验:如何保证不同网络环境下的应用体验_Meta_小盖_InfoQ精选文章