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





首屏启动之痛



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



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



用户从调用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启动时发起业务请求时过程:



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



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



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



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


 









首屏启动之痛



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



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



用户从调用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启动时发起业务请求时过程:



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



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



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



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


 





上一篇:PostgreSQL 10.0 preview 功能增强 - 缓存自动预热, 直达性能巅峰


下一篇:App如何实现就近接入?如何改善调度不准问题?