如何让App首屏启动更快 -- httpdns持久化缓存方案

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: httpdns作为解决域名劫持,调度不精准问题的一剂良药,很大程度上改善了app的用户体验。为了追求更加极致的性能体验,本文推出httpdns持久化缓存方案,让app首屏启动更快!

首屏启动之痛

对于大部分app而言,首屏启动是最为关键的场景之一,一旦出现阻塞将直接影响到用户体验,为此阿里云httpdns sdk推荐异步接口getIpByHostAsync来获取ip,其大致过程如下:

_a

用户从调用getIpByHostAsync接口大致会经历:

  • 内存缓存检查
  • ip合法性检查
  • 异步httpdns请求

从流程中可以看出,由于httpdns请求是异步的,对于app首屏场景来说,httpdns可能正在解析途中,app在解析结果返回前会拿到空的ip,转而去做Local DNS解析。

解决之道:持久化缓存

为了追求极致的性能体验,尽量避免首屏启动时的Local DNS解析,本文推出httpdns的持久化缓存方案,新增接口:
void setCachedIPEnabled(boolean enable);

初始化示例:
service = HttpDns.getService(getApplicationContext(), ACCOUNT_ID);
service.setCachedIPEnabled(true);

当setCachedIPEnabled(true)被调用时,httpdns解析记录从持久化缓存同步到内存缓存。httpdns请求成功,解析记录会同步更新到内存缓存和持久化缓存,其大致过程如下:

  • Step1 httpdns sdk初始化
  • Step2 持久化缓存开启
  • Step3 持久化缓存记录更新到内存缓存
  • Step4 调用getIpByHostAsync
  • Step5 检查ip是否合法
  • Step6 拿到ip,发起http请求

采用持久化缓存前,APP启动时发起业务请求时过程:

_b

采用持久化缓存后的过程如下:

_c

有了持久化缓存,app首屏启动就能立刻拿到解析好的ip,同时,阿里云httpdns sdk内部的过期机制也能保证拿到ip的可靠性。此外,网络切换发生后,SP(Server Provider,服务提供商)也可能发生变化,相同Host在不同SP下获取的ip也会区别对待。httpdns sdk会结合当前网络环境,通过SP和Host共同确定ip,让app拿到的结果更加精准。

持久化缓存功能在Android v1.1.2 及以上版本添加,ios版本也将在近期上线,敬请期待!使用过程中如果遇到什么问题,可以加入钉钉群进行交流,群号:11777313。

目录
相关文章
|
7月前
|
存储 缓存 NoSQL
实现返利App中的数据缓存与预加载机制
实现返利App中的数据缓存与预加载机制
|
缓存
uniapp清理app缓存
uniapp清理app缓存
157 0
|
存储 缓存 安全
App极限瘦身 | 动态下发so(1)
App极限瘦身 | 动态下发so
310 0
App极限瘦身 | 动态下发so(1)
|
移动开发 缓存 安全
App极限瘦身 | 动态下发so(2)
App极限瘦身 | 动态下发so
192 0
|
消息中间件 ARouter 安全
「性能优化系列」APP启动优化理论与实践(下)
● 启动耗时监测实战:手动打点以及AspectJ方式对比; ● 启动优化实战:有向无环图启动器、IdleHandler启动器以及其他黑科技方案; ● 优化工具介绍。
398 0
|
XML 监控 Shell
「性能优化系列」APP启动优化理论与实践(上)
尤其在如今的快时代,一款秒开的App比一款启动需要耗费好几秒的App更容易被用户喜爱和长期使用,整的不好还容易被用户永久拉入黑名单。这时候,应用的启动优化就必不可少了
214 0
|
前端开发 数据处理
Flutter 使用 Dio 的 Post 请求增加动态
本篇介绍了新增数据页面的示例,同时对于编辑和添加的页面重复部分通过封装共用的表单组件简化了页面结构和提高复用性。
470 0
Flutter 使用 Dio 的 Post 请求增加动态
|
JSON 调度 数据格式
APP冷启动优化:如何使用好工具【Perfetto\ systrace \MethodTracing】
APP冷启动优化:如何使用好工具【Perfetto\ systrace \MethodTracing】
926 0
APP冷启动优化:如何使用好工具【Perfetto\ systrace \MethodTracing】
|
安全 开发工具 iOS开发
iOS优化App启动时间优化(2021-09更新)
当用户按下Home键的时候,iOS的App并不会马上被杀掉进程,还会继续存活若干时间。理想情况下,用户点击App的图标再次回来的时候,App几乎不需要做什么,就可以还原到退出前的状态,继续为用户服务。这种持续存活的情况下启动App。
395 0
iOS优化App启动时间优化(2021-09更新)
|
移动开发 JavaScript Android开发
webview 优化加载 H5 应用(尝试方案)
webview 优化加载 H5 应用(尝试方案)
403 0