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

简介: 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。

目录
相关文章
|
Prometheus Kubernetes 监控
Kubernetes 的 NameSpace 无法删除应该怎么办?
Kubernetes 的 NameSpace 无法删除应该怎么办?
|
移动开发 数据可视化 小程序
利用APICloud studio3可视化开发工具开发企业管理app
利用 APICloud studio3 可以帮助我们快速创建并运行一个简单的应用,内容涉及开发工具使用、代码管理、应用预览、调试等。现在我们来通过 APICloud studio3 快速创建一个企业管理 app,帮助企业提供信息展示、案例展示、加盟申请等。
1038 0
|
弹性计算 网络协议 Linux
最佳实践:阿里云VPC、ECS支持IPv6啦!
12月6日,阿里云宣布为企业提供全栈IPv6解决方案。 阿里云专有网络VPC、云服务器ECS,作为阿里云的核心产品,也于2018年11月底上线双栈VPC、双栈ECS,目前正在对外公测中。 那么如何在阿里云拥有IPv4/IPv6双栈VPC、双栈ECS呢,请看下文详解。
19716 0
|
9月前
|
人工智能 供应链
“人工智能+”新赛道与生成式人工智能(GAI)认证:驱动未来竞争力的双引擎
在数字化时代,人工智能(AI)正深刻变革各行业,“人工智能+”行动推动产业智能化升级。生成式人工智能(GAI)认证由培生推出,助力培养专业AI人才,弥补市场供需差距。GAI认证提供系统培训与技能评估,为企业选拔人才提供依据,促进AI行业健康发展。未来,“人工智能+”将持续引领高质量发展,通过技术创新和人才培养,开辟新赛道、赢得新优势。
“人工智能+”新赛道与生成式人工智能(GAI)认证:驱动未来竞争力的双引擎
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
2147 1
|
算法 C++ 容器
C++初阶之一篇文章教会你queue和priority_queue(理解使用和模拟实现)(下)
优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。 此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元素)。 优先队列被实现为容器适配器,容器适配器即将特定容器类封装作为其底层容器
|
运维 Kubernetes 安全
评测文章:阿里云容器服务ACK
阿里云容器服务(Alibaba Cloud Container Service for Kubernetes,简称 ACK)是一个全托管的 Kubernetes 容器管理服务。它可以帮助企业在云上高效地部署、管理和扩展容器化应用。本文将详细评测 ACK 的功能、优势及其应用场景,帮助读者更好地理解和使用这一服务。
|
移动开发 开发框架 小程序
基于mpvue的小程序项目搭建的步骤
基于mpvue的小程序项目搭建的步骤
171 0
wustojc4002三个整数排序
wustojc4002三个整数排序
74 0