iOS 網(wǎng)絡(luò)優(yōu)化二三事

DNS查找時(shí)間

可以使用的工具

$ dig www.baidu.com
dig.png
$ traceroute www.baidu.com
traceroute.png
  • 最小化應(yīng)用使用的專有域名的數(shù)量

如果子域名數(shù)量上升至兩位數(shù),我們需要仔細(xì)考慮這方面的優(yōu)化了

  • 冷啟動(dòng)時(shí)不必要鏈接的域名

    對(duì)于后續(xù)的子域名,嘗試更早的進(jìn)行DNS解析,也被稱為DNS預(yù)先下載

DNS預(yù)先下載

可以參考以下兩種方法:

  • 如果子域名和主機(jī)在控制范圍內(nèi),可以配置一個(gè)預(yù)設(shè)的URL,不返回任何數(shù)據(jù),只返回HTTP 204的狀態(tài)碼。(對(duì)主機(jī)進(jìn)行偽鏈接)

  • 使用 gethostbyname 執(zhí)行一個(gè)明確的 DNS 查找。

建議使用第一種方法,針對(duì)不同的協(xié)議 gethostbyname 可能會(huì)解析至不同的 IP ,雖然這很不常見,但第7層的路由可以根據(jù)實(shí)際的請(qǐng)求解析 IP 地址,例如,圖像是一個(gè)地址,視頻是另外一個(gè)地址。

SSL握手時(shí)間

如果應(yīng)用中所有連接均是通過 TLS/SSL 的(使用HTTPS

  • 最大程度減少應(yīng)用發(fā)起的連接數(shù),也需要減少應(yīng)用連接的獨(dú)有域名的數(shù)量

  • 請(qǐng)求結(jié)束后不要關(guān)閉 HTTP/S 連接

為所有的 HTTP/S 的請(qǐng)求添加頭 Connection: keep-alive

這確保了同樣的連接在下一次請(qǐng)求時(shí)可以復(fù)用

  • 使用域分片
  • 域分片在 SPDY 及其后續(xù)版本 HTTP/2 中是可用的

網(wǎng)絡(luò)類型

確保主機(jī)的可到達(dá)性

可使用的工具:可到達(dá)性庫: Reachability

  1. WiFi
  2. 4G: LTE , HSPA+
  3. 3G: HSDPA , HSUPA , UMTS , DMA2000
  4. 2G: EDGE , GPRS

  • 設(shè)計(jì)時(shí)考慮不同的網(wǎng)絡(luò)可用性

  • 出現(xiàn)失敗時(shí),在隨機(jī)的,以指數(shù)增長的延遲后進(jìn)行重試

  • 設(shè)置強(qiáng)制刷新之間的最短時(shí)間

    在用戶明確要求刷新時(shí),不要立即發(fā)出請(qǐng)求。檢查是否已經(jīng)存在一個(gè)請(qǐng)求,或者當(dāng)前請(qǐng)求與上次請(qǐng)求的時(shí)間間隔是否小于閾值

    如果滿足上述條件,則不要發(fā)送此次請(qǐng)求

  • 使用可到達(dá)性庫: Reachability 發(fā)現(xiàn)網(wǎng)絡(luò)狀態(tài)變化

    發(fā)現(xiàn)網(wǎng)絡(luò)不可用時(shí),向用戶提示。通過讓用戶了解潛在的連接問題,可以避免應(yīng)用受到指責(zé)

  • 不要緩存網(wǎng)絡(luò)狀態(tài)

  • 基于網(wǎng)絡(luò)類型下載內(nèi)容

    比如說圖片,不用總下載原始的、高質(zhì)量的圖像。應(yīng)該始終下載和設(shè)備最適配的圖像

  • 樂觀的預(yù)下載

    在WiFi網(wǎng)絡(luò)中,預(yù)先下載用戶在后續(xù)時(shí)刻需要的內(nèi)容。

    最好分次下載內(nèi)容,在使用后關(guān)掉網(wǎng)絡(luò)連接,有助于節(jié)省電量

  • 如果適用,當(dāng)網(wǎng)絡(luò)可用時(shí),支持同步的離線存儲(chǔ)

總是要將網(wǎng)絡(luò)和通信與UI解耦

延遲

需要追蹤以下數(shù)據(jù)

  • 連接超時(shí)
  • 響應(yīng)超時(shí)
  • 載荷大小

網(wǎng)絡(luò)API

AFNetworking

你可能需要掌握

  • 網(wǎng)絡(luò)任務(wù)的暫停,停止和重新啟動(dòng)

  • 每個(gè)會(huì)話的存儲(chǔ)(緩存,cookie jar 等)

  • 后臺(tái)聯(lián)網(wǎng)的好處

  • 身份驗(yàn)證

  • 異步方法

  • 數(shù)據(jù)格式和數(shù)據(jù)壓縮

工具

dig

dig.png

traceroute

traceroute.png

網(wǎng)絡(luò)鏈接調(diào)節(jié)器

網(wǎng)絡(luò)鏈接調(diào)節(jié)器.PNG

Charles

Charles.png

AT&T

AT&T

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

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評(píng)論 19 139
  • 1. 基礎(chǔ)知識(shí) 1.1 3種常見的計(jì)算機(jī)體系結(jié)構(gòu)劃分 OSI分層(7層):物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話...
    Mr希靈閱讀 20,110評(píng)論 6 120
  • 一直聽別人說摔跤吧爸爸是特別好看的一部電影,一直沒有機(jī)會(huì)去電影院看,今天休息,在翻看電影的 時(shí)候突然看到摔跤...
    R張茹閱讀 384評(píng)論 4 0
  • 安若素好不容易回過神來,看向柳青石那個(gè)方向。柳青石正用未出鞘的惡鬼匕首壓住一個(gè)東西。那東西渾身慘白,倒是有個(gè)人的形...
    貓舒閱讀 391評(píng)論 0 0
  • 在車上畫了個(gè)妝,安邑帶著精致的妝容,走進(jìn)鄧宅大門。 “董事長在家嗎?”安邑將手提包給到迎上來的秦嬸。 “在后院湖邊...
    沈落輕閱讀 322評(píng)論 0 0

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