您的位置:首頁>正文

如何讓App首屏啟動更快 -- httpdns持久化緩存方案

摘要

httpdns作為解決功能變數名稱劫持, 調度不精准問題的一劑良藥, 很大程度上改善了app的用戶體驗。 為了追求更加極致的性能體驗, 本文推出httpdns持久化緩存方案, 讓app首屏啟動更快!

首屏啟動之痛

對於大部分app而言, 首屏啟動是最為關鍵的場景之一, 一旦出現阻塞將直接影響到用戶體驗, 為此阿裡雲httpdns sdk推薦非同步介面getIpByHostAsync來獲取ip, 其大致過程如下:

使用者從調用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啟動時發起業務請求時過程:

採用持久化緩存後的過程如下:

有了持久化緩存, app首屏啟動就能立刻拿到解析好的ip, 同時, 阿裡雲httpdns sdk內部的過期機制也能保證拿到ip的可靠性。 此外, 網路切換發生後, SP(Server Provider, 服務提供者)也可能發生變化, 相同Host在不同SP下獲取的ip也會區別對待。 httpdns sdk會結合當前網路環境, 通過SP和Host共同確定ip, 讓app拿到的結果更加精准。

持久化緩存功能在Android v1.1.2及以上版本添加, ios版本也將在近期上線, 敬請期待!

-END-

雲棲社區

ID:yunqiinsight

雲計算丨互聯網架構丨大資料丨機器學習丨運維

點擊“閱讀原文”

同類文章
喜欢就按个赞吧!!!
点击关闭提示