如何让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。

目录
相关文章
|
4月前
|
域名解析 网络协议 安全
2026阿里云云解析 DNS 个人版深度解析:功能、价格与选型参考
在域名解析服务领域,阿里云云解析 DNS 凭借全球节点覆盖与安全防护能力,成为个人开发者与企业用户的重要选择。其中个人版以亲民的价格,在性价比层面具备显著吸引力。下面从版本定位、核心功能、价格体系、实测表现及选型建议等维度,对阿里云云解析 DNS 个人版进行全面解析,为用户提供客观决策依据。
1406 12
|
算法 安全 JavaScript
通过Postman实现API网关的请求签名与调试
Postman是一个非常强大的HTTP发包测试工具, 目前Postman已经提供了Windows/Mac/Linux系统的客户端的下载,使用很方便。不过API网关的调试,需要对HTTP请求进行签名才能调用,无法使用简单的curl等发包工具完成,但我们可以使用Postman工具提供的Pre-request Script脚本来实现API网关的签名功能,实现API的调试功能。
7109 0
|
6月前
|
存储 人工智能 自然语言处理
构建AI智能体:十八、解密LangChain中的RAG架构:让AI模型突破局限学会“翻书”答题
本文深入探讨了如何利用LangChain框架实现RAG(检索增强生成)架构,构建智能问答系统。文章首先介绍了RAG技术解决大模型知识更新和准确性问题的原理,以及LangChain作为开发框架提供的模块化组件。详细解析了LangChain的核心模块(模型、提示、索引、链等)和四种ChainType(stuff、map_reduce、refine、map_rerank)的特点与适用场景。通过一个完整的代码示例,展示了如何结合DeepSeek模型和FAISS向量数据库处理PDF文档,实现本地知识库问答功能
1120 9
|
9月前
|
缓存 安全 网络安全
0x80070002错误代码怎么解决?
以下是解决Windows系统错误代码0x80070002的多种方法,综合了高可信度来源的解决方案:
|
11月前
|
atlas AI芯片 Python
昇腾NPU上基于MindIE服务的AIME和MATH500测评方案
本文介绍了基于MindIE服务和lighteval工具对DeepSeek-R1类模型进行能力测评的方法。针对AIME 2024、AIME 2025、MATH-500和GPQA等数据集,通过在Atlas 800I A2硬件上部署MindIE服务,结合开源项目Open R1的评测方法完成测评。主要内容包括模型权重下载、MindIE服务化部署、lighteval安装与配置,以及使用openai模式进行测评的具体步骤。最终展示了AIME 2024和MATH-500的测评结果,并对比了DeepSeek官方数据。该方案适合需要准确评估带推理思维链模型性能的场景。
982 0
|
7月前
|
人工智能 搜索推荐 数据挖掘
2025做SEO 要花多少钱?收费标准超清楚!
SEO起源于美国,2015年后在中国逐渐专业化。因Google技术成熟,外贸网站排名多被国外占据,新站需系统化投入才能超越。SEO费用无统一标准,受行业、预算、目标等多因素影响,月费通常500至1万美元。企业应视其为长期投资,合理规划预算,选择可靠服务商或工具入行。
|
Java Maven 开发者
入职必会-开发环境搭建14-IDEA配置Maven
在 IDEA 中配置 Maven 可以帮助开发者更方便地管理项目依赖、构建项目和部署应用程序。要在 IDEA 中配置 Maven,可以按照以下步骤进行。
637 1
入职必会-开发环境搭建14-IDEA配置Maven
|
机器学习/深度学习 机器人 网络架构
RT-DETR改进策略【模型轻量化】| 替换轻量化骨干网络:ShuffleNet V1
RT-DETR改进策略【模型轻量化】| 替换轻量化骨干网络:ShuffleNet V1
510 0
RT-DETR改进策略【模型轻量化】| 替换轻量化骨干网络:ShuffleNet V1
|
存储 关系型数据库 MySQL
MySQL存储引擎详述:InnoDB为何胜出?
MySQL 是最流行的开源关系型数据库之一,其存储引擎设计是其高效灵活的关键。InnoDB 作为默认存储引擎,支持事务、行级锁和外键约束,适用于高并发读写和数据完整性要求高的场景;而 MyISAM 不支持事务,适合读密集且对事务要求不高的应用。根据不同需求选择合适的存储引擎至关重要,官方推荐大多数场景使用 InnoDB。
802 7
|
Java Spring
Spring AOP(面向切面编程)详解
Spring AOP(面向切面编程)详解