写点什么

我们分析了 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:003898

评论

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

低代码开发平台的敏捷之力

雯雯写代码

敏捷开发 低代码 信息化

移动端堆栈关键行定位的新思路

移动研发平台EMAS

移动应用 应用崩溃 崩溃分析

SpringBoot-技术专题-Websocket消息推送和广播消息推送

洛神灬殇

谈谈项目中主动full gc的一些问题

AI乔治

Java 编程 架构 JVM GC

Amdocs收购OPENET:关于5G应用落地的思考

VoltDB

大数据 数据分析 5G 物联网

音视频社交的应用和优势

anyRTC开发者

音视频 WebRTC 语音 直播 RTC

React Ref 如何使用(译)

西贝

Java 翻译 React Hooks Ref

震惊!线上四台机器同一时间全部 OOM,到底发生了什么?

AI乔治

Java 架构

腾讯安全披露多个0day漏洞,Linux系统或陷入“被控”危机

目标检测之YOLOv1

Dreamer

嵌入式的我们为什么要学ROS

良知犹存

ROS

百万年薪技术大佬的读书之旅

四猿外

Java 书籍推荐 书单 书单推荐 书籍

Java9 新特性 - 下篇

hepingfly

Java 新特性

Appium常用操作之「微信滑屏、触屏操作」

清菡软件测试

Java先驱者发布最新Java全栈面试“秘籍”,助力你吃透Java新特性!

Java架构追梦

Java 学习 编程 架构 面试

微信小程序接口测试时appid为空如何解决

测试人生路

微信小程序 接口测试

让容器应用管理更快更安全,Dragonfly 发布 Nydus 容器镜像加速服务

阿里云基础软件团队

云原生

阿里五位大佬总结的操作系统+程序员必知硬核知识大全离线版pdf火了,在Github上获赞89.3K+,现已开源!

996小迁

架构 面试 操作系统 计算机

JVM垃圾回收与一次线上内存泄露问题分析和解决过程

AI乔治

Java 编程 架构 JVM 内存泄漏

SpringBoot-技术专题-war包项目外置配置文件

洛神灬殇

AI 科学家带你快速 Get 人工智能最热技术

京东科技开发者

人工智能

让你怀疑人生的重载和重写的区别

艾小仙

Java 编程语言

LeetCode题解:90. 子集 II,迭代,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

云原生时代下数据库管理工具的变革

BinTools图尔兹

数据库 sql 云原生 数据治理 工具软件

SpringBoot- 技术专题 -Websocket+Nginx出现404问题

洛神灬殇

零基础IM开发入门(四):什么是IM系统的消息时序一致性?

JackJiang

淘宝内测新内容社区淘宝逛逛:邀请B站UP主入驻打造流量池

石头IT视角

高频面试题:秒杀场景设计

艾小仙

Java 面试 高并发 秒杀

《Among Us》火爆全球,实时语音助力派对游戏开启第二春

ZEGO即构

语音 游戏 RTC

LeetCode题解:90. 子集 II,迭代+位运算,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

跟Kafka学技术系列之时间轮

AI乔治

Java 编程 架构

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