写点什么

我们分析了 100 个移动应用程序 发现了让 APP 更快的秘籍

  • 2017-06-27
  • 本文字数:2343 字

    阅读完需:约 8 分钟

据不完全统计,平均每人每天要跟 10 多个 App 打交道,无疑,App 已成为手机生态系统的核心应用。体验好的 App 应该具备增加用户转化率、驱动用户安装、增加用户忠诚度三点。如何提升 App 的用户体验,全球最大的 CDN 服务商 Akamai,通过对应用商店中前 100 个 App 的移动性能分析,提出了目前移动 App 普遍存在的问题,并提供了一套全面的 App 优化方案(详情访问)。

API 分析:第一方与第三方

一个移动 APP 由两类 API 组成:

  • 第一类是对应用程序加载,负责用户体验的至关重要的 API;
  • 另一类负责收集信息,分析数据,启用广告追踪和社交媒体整合的第三方 API。 这类 API 对用户体验并不重要。

分析显示,每个移动 App 平均包含 8 个第三方 API 和 4 个第一方 API:

在前 100 个 App 使用的第三方 API 中,有 73 家企业使用了 Google Analytics 和 Ad SDK:

这为什么很重要?

第三方 SDK 主要用于分析和跟踪移动 App 的崩溃状况,但太多的第三方 SDK 和 API 会损害移动应用程序的性能,因此了解您的 App 需要多少必要的第三方 API 至关重要。 例如,App 的部分应用程序被第三方广告代码轰炸,会导致关键 API(第一方)和非关键 API(第三方)之间的套接字争用,影响用户体验。

移动性能分析

通过分析每个 App 的.har 文件来获取关于性能更多的信息(.har 文件提供了对应用程序的每个请求的洞察,并能够提供 DNS 连接、TCP 和 TLS 连接时间的数据,响应时间,下载时间等)可以发现:

1、较少的移动 APP 在使用 IPv6

前 100 个 App 中,84.2% 的 App 没有使用 IPv6,5% 以下的 App 使用了 IPv6。蜂窝网络上的 IPv6 连接比 IPv4 连接相对更快,Facebook 和 Linkedin 进行的 RUM(实际用户监控)研究显示, 使用 IPv6 能够使移动网络的性能显着提升。

2、非标准 User-Agent 字符串

移动 App 则通过发送“User-Agent 字符串”向网站传递客户端的信息,标准的 User-Agent 字符串包含设备信息和使用的浏览器类型。当今很多移动 App 通过客户端信息来做出决策,比如根据设备类型调整图像大小。但是 User-Agent 字符串错误或不标准时,所有基于用户信息的字符串失败。据调查,大多数图像处理服务并不会根据设备类型调整图像大小,从而导致将非常大的图像下载到设备。在本文分析样本中,有 67.9%的移动应用在请求内容时具有非标准 User-Agent 字符串。

3、未使用 HTTP/2 协议

HTTP/2 具有标题压缩和套接字重用的功能,可避免创建新的 TCP 套接字,并为每个请求协商 TLS,从而减少加载时间。尽管大多数企业对域名已启用了 HTTP/2,但这并不意味着 App 也能正常使用 HTTP/2 协议,因此,需要升级移动应用程序网络库来支持 HTTP/2。

通过分析不难发现,大部分 App 都存在一定的问题,可以采用“优化 API”和“升级 HTTP/2 协议”的方法提速。要想提高下载率和用户参与度,App 不仅需要拥有引人入胜的内容,也要提供极致的用户浏览体验。如何在保证速度的前提下承载更丰富的内容?答案是——优化每一个关键问题!

APP 速度优化的关键问题

  1. 复杂的移动网络环境:移动环境复杂多变,很容易从快到慢,从慢到无。如何保证用户获得始终如一的良好体验?
  2. 最后一公里延迟:在移动网络中,信号是以电磁波的形式通过基站、在不同区域之间进行传播。这导致蜂窝网络的延迟、不可靠。

目前 CDN 服务商节点只能放在基站后面。这就意味着传统 CDN 对于“基站——用户”这段距离无法加速。“这段距离”就像一片烟雾笼罩在云里的用户端,而雾气缭绕之下就是著名的最后一公里问题。

解决方案:智能与工具的双剑合璧

以上关键问题,除了在 CDN 云平台的智能优化,还可以借助外部工具。我们根据网络运营中需要注意的事项,总结了以下 4 点建议。

返回用户网络状况

移动环境复杂多变,这就需要你的 App 能快速感知网络环境。因此,开发人员需要一个 API 接口,能够访问并返回实时网络状态,以便根据返回值预先设置不同网络状态下加载的内容。提前设置网络状态佳的情况下加载高清图像,网络不佳时减少图像像素。

同时也可根据网络状态调节推送内容,如网络不佳时返回少量关键搜索结果。

智能预设内容

移动应用程序开发人员能以智能方式,预先定位内容。开发人员可收集统计信息得到用户偏好,并根据用户偏好、客户端和服务器之间设置的协议预制内容。用户进行注册后,预置内容自动加载到设备上。这将允许用户在离线的状态,依然可以从 App 中获得良好的体验。

加速最后一公里

以往移动终端只能根据所处网络所给的默认 DNS 来决定和哪个服务器通讯,无法控制最后一公里的性能。现在,通过 Akamai 的 Sureroute for cellular 技术,移动终端可以获得多组 CDN 的服务器节点目标地址。结果可能有一个运营商的不同区域地址,甚至不同运营商的地址。

终端会发出极微小的探测包,向不同地址结果赛跑探测,实时判断出真实连接性能最好的节点地址。同时,它也带来了多路径冗余备份的能力!

不同终端交互一致

不同于 Web 站点的是,App 受限于移动设备和操作系统。为了适应不同设备大小,App 开发者需要根据目前市场上主流手机品牌、型号、尺寸来设计不同密度图像。想让越多不同的屏幕大小的手机能够适应你的 App,则生成的图片屏幕密度版本要越齐全。

开发者可以引入一站式“图像管理器”——自动优化每张在线图像,实现适合于所有图像和设备大小和品质的最佳结合,提升浏览体验,简化开发流程。

写在最后

APP 性能问题是一个复杂的领域问题,解决性能问题关键是找出性能瓶颈,但如果永远只能“东窗事发”之后进行查找补救还远远不够,因而在解决系统性能的道路上,需要在系统开发时就给予足够的重视,甚至在架构决策时,就开始考虑性能的需求。移动应用程序之初便是对 API 的构建,Akamai 从 API 加速 、 缓存、 压缩、Prioritization Cloudlet 四个维度给出了比较全面的 API 优化方案与建议,感兴趣的读者可以点击学习

2017-06-27 19:003802

评论

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

关于架构的几件小事:架构概述(1)

北风

架构 架构设计 架构师 架构设计原则

如何在 Go 中写出高效的单元测试

Grafana 爱好者

testing slideshare Go 语言

架构师训练营第六周作业

talen

[译] 图说前端-图解 React Native

梦见君笑

大前端 漫画编程

[译] 图解前端-深入理解 Props 和 State

梦见君笑

大前端 React 漫画编程

手把手整合SSM框架

JavaPub

大话设计模式 | 4. 装饰模式

Puran

C# 设计模式

AOP有几种实现方式?

八苦-瞿昙

技术 随笔杂谈 aop 代理 框架

U盘+grub2安装centos8实战

程序饲养员

要不要做一个gif动态图玩一下?

诸葛小猿

GIF ScreenToGif 动态图

[译] 图说前端-组件、Prop 和 State

梦见君笑

大前端 React 漫画编程

海南的七星彩网站系统盘口代码解析

网站,小程序,APP开发定制

代码

架构师课程第六周 作业

杉松壁

如何使用预测性指标衡量敏捷转型的成功?

Atlassian

敏捷开发 开发工具 Atlassian Jira

JavaScript 混淆与逆向必读之 AST 节点类型名词基础

穿甲兵

Java

工程规约 - maven统一管理

Man

maven DevOps 工程规约

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

张明森

帮助小团队实现大梦想 | Atlassian 云产品免费使用

Atlassian

创业使人成长系列 (3)- 如何取个好名字

石云升

创业 成长 取名

使用 Generic Webhook Trigger 触发 Jenkins 多分支流水线自动化构建

jerry.mei

DevOps 持续集成 jenkins CI/CD 持续交付

ARTS 04 - 使用 Gitlab + Generic Webhook Trigger 触发 Jenkins 自动化构建

jerry.mei

算法 ARTS 打卡计划 CI/CD 函数式编程 Elixir

vue项目发布时去除console语句

网站,小程序,APP开发定制

了不起的 Webpack Scope Hoisting 学习指南

Geek_z9ygea

Java 大前端 webpack

[译] 图说前端-图解 React

梦见君笑

大前端 React 框架

java8的parallelStream提升数倍查询效率

网站,小程序,APP开发定制

java8

万字详解加拿大央行CBDC分析报告

CECBC

架构师训练营第六周作业--doris临时失效时序图

CATTY

时序图

阿里花500万年薪招天才黑客?官方回应:这种人得交给警察

程序员生活志

黑客 阿里

如何编写可怕的 Java 代码?

武培轩

Java 编程 程序员 后端

技术解读:单集群如何做到2万+规模

数据湖洞见

大数据 FusionInsight 华为云 大集群

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

CATTY

我们分析了100个移动应用程序 发现了让APP更快的秘籍_DevOps & 平台工程_阿卡迈_InfoQ精选文章