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

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


首屏启动之痛


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


image


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


(1)内存缓存检查


(2)ip合法性检查


(3)异步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启动时发起业务请求时过程:


image


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


image


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


钉钉搜索35248489,加入阿里云云原生应用研发平台EMAS技术交流群,探讨最新最热门的应用研发技术和实践。(或钉钉扫码加入)


image.png


相关文章
|
25天前
|
缓存 网络协议 API
【Azure 环境】请求经过应用程序网关,当响应内容大时遇见504超时报错
应用程序网关的响应缓冲区可以收集后端服务器发送的全部或部分响应数据包,然后再将它们发送给客户端。 默认在应用程序网关上启用响应缓冲,这对于适应缓慢的客户端很有用。
|
29天前
|
监控 安全 Apache
构建安全的URL重定向策略:确保从Web到App平滑过渡的最佳实践
【10月更文挑战第2天】URL重定向是Web开发中常见的操作,它允许服务器根据请求的URL将用户重定向到另一个URL。然而,如果重定向过程没有得到妥善处理,可能会导致安全漏洞,如开放重定向攻击。因此,确保重定向过程的安全性至关重要。
45 0
|
3月前
|
域名解析 网络协议 网络安全
【App Service】遇见本地访问Azure App Service应用慢或者是调用第三方接口慢的调试小工具
【App Service】遇见本地访问Azure App Service应用慢或者是调用第三方接口慢的调试小工具
|
4月前
|
存储 缓存 NoSQL
实现返利App中的数据缓存与预加载机制
实现返利App中的数据缓存与预加载机制
|
缓存
uniapp清理app缓存
uniapp清理app缓存
127 0
|
前端开发
案例04-生产环境App打包未关联云空间导致用户不能自动升级
案例04-生产环境App打包未关联云空间导致用户不能自动升级
案例04-生产环境App打包未关联云空间导致用户不能自动升级
|
存储 缓存 安全
App极限瘦身 | 动态下发so(1)
App极限瘦身 | 动态下发so
281 0
App极限瘦身 | 动态下发so(1)
|
存储 人工智能 数据库
App Inventor 2 本地存储之“微数据库”组件,App数据持久化
数据存储一般分为两大类:本地 和 网络,本地一般是数据文件的形式存储在手机上,本地App每次启动都可以共享读取,但是不同的手机之间不可以共享数据;如果需要多个手机之间共享获取或存储数据的话,那就需要用到网络数据库了(云数据库、网络微数据库,它们目前默认都是MIT服务器),它的原理就是用户A将数据通过网络传输到云服务器,然后用户B通过网络可以读取到用户A存储的数据,最典型的应用就是类似微信的聊天App了。 本地数据库一般指的就是“微数据库”,提供键、值方式的存储。
519 0
|
缓存
SAP Gateway 后台模型的缓存设置(1)
SAP Gateway 后台模型的缓存设置
|
缓存 安全 PHP
SAP Gateway 后台模型的缓存设置(2)
SAP Gateway 后台模型的缓存设置