http請求優(yōu)化,dns查詢

有時候app里面的資源是一些外鏈,所以我們不能保證請求外鏈的結(jié)果,外鏈?zhǔn)Щ蛘哒埱笏俣嚷蛘咂渌麊栴},雖然不是自己的服務(wù)器,但還是有解決的辦法。

第一步,外鏈先過自己的服務(wù)器,把失效的鏈接先過濾掉,剩下那些能用的鏈接,我們還需要對其進一步的優(yōu)化。

優(yōu)化的原理,我們拿到外鏈的host,一個host對應(yīng)著多個ip,我們需要拿到那個網(wǎng)絡(luò)最優(yōu)的ip,如果直接拿host取訪問,因為ip會有緩存的緣故,每次訪問的都是同一個ip。我們需要拿host去做dns查詢,查詢得到ip后,直接拿ip取訪問。

這里是查詢的具體邏輯:

協(xié)議

通過一個請求返回查詢信息,這個查詢服務(wù)騰訊有免費的,不過每天有固定查詢次數(shù)

218.107.196.221;218.107.196.222,180

前2個為ip用分號分隔,后面一個為TTL(過期時間)

1. dn 表示要查詢的域名

2. ttl=1 表示要求 D+服務(wù)器在響應(yīng)結(jié)果中攜帶解析結(jié)果的 ttl 值

3. 返回的ttl和域名解析結(jié)果用英文逗號分割。

4. Http請求超時時間建議設(shè)置為10s

5. ts當(dāng)前時間的時間戳


實現(xiàn)細節(jié)

1. 在內(nèi)存中緩存對應(yīng)域名的解析結(jié)果,緩存規(guī)則如下:

緩存時間:緩存時間建議采用查詢得到的域名 TTL

緩存更新應(yīng)在以下兩種情形下進行:

1. ?用戶網(wǎng)絡(luò)狀態(tài)發(fā)生變化時: 移動互聯(lián)網(wǎng)的用戶的網(wǎng)絡(luò)狀態(tài)由 3G 切 Wi-Fi,Wi-Fi 切 3G 的情況下,其接入點的網(wǎng)絡(luò)歸屬可能會發(fā)生變化。所以在用戶的網(wǎng)絡(luò)狀態(tài)發(fā)生變化時,需要重新向服務(wù)器發(fā)起域名解析請 求,以獲取到用戶當(dāng)前網(wǎng)絡(luò)歸屬下的最優(yōu)指向。

2. 緩存過期時: 當(dāng)域名解析的結(jié)果緩存時間到期時,客戶端應(yīng)該向服務(wù)器重新發(fā)起域名解析請求以獲取最新的域名對應(yīng)的 IP。為了減少用戶在緩存過期后重新進行域名解析時的等待時間,建議在 75% TTL 時就開始進行域名解析。如本地緩存的 TTL 為 600s,那么在第 600*0.75=450s 時客戶端就應(yīng)該開始進行域名解析。

2. 發(fā)起http請求時,首先從緩存中查詢是否有對應(yīng)域名的ip,如果沒有則之前的邏輯不變,并且觸發(fā)緩存更新,如果有對應(yīng)ip,則直接使用ip請求

實現(xiàn)策略:

1.?應(yīng)用啟動時觸發(fā)請求

2. ?應(yīng)用程序在前臺,并且網(wǎng)絡(luò)狀態(tài)發(fā)生變化時, 觸發(fā)請求(wifi切換到數(shù)據(jù)網(wǎng)絡(luò),或相反)

3. http請求時,如果沒有對應(yīng)域名的ip,觸發(fā)請求,如果有對應(yīng)ip但是ttl過期,也觸發(fā)請求(ttl最小值設(shè)為10分鐘)

4. 需要解析的域名通過配置更新來獲取

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 最近,終于要把《WEB請求處理系列》提上日程了,一直答應(yīng)小伙伴們給分享一套完整的WEB請求處理流程:從瀏覽器、Ng...
    七寸知架構(gòu)閱讀 32,548評論 27 253
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,694評論 19 139
  • 1. 概述 在網(wǎng)絡(luò)環(huán)境中一般用戶只需要在瀏覽器中輸入url如www.sunny.com就可以到對應(yīng)服務(wù)器獲取相應(yīng)的...
    ghbsunny閱讀 3,445評論 0 7
  • DNS(Domain Name System,域名系統(tǒng)),因特網(wǎng)上作為域名和IP地址相互映射的一個分布式數(shù)據(jù)庫,能...
    一直在努力hard閱讀 4,813評論 3 19
  • 簡介 用簡單的話來定義tcpdump,就是:dump the traffic on a network,根據(jù)使用者...
    保川閱讀 6,088評論 1 13

友情鏈接更多精彩內(nèi)容