高效能iOS應用開發

weixin_33758863發表於2017-08-24

IOS網路優化點

1.DNS查詢時間

為了最大限度地減少DNS查詢時間所產生的延遲,應遵循以下的實踐:
最小化應用使用的專有域名的數量。按照路由的一般工作方式,多個域名是不可避免的。最好能做到以下幾點:
身份管理(登入、登出、配置檔案)
資料服務(API端點)
CDN(圖片和其他靜態人工產品)
在應用啟動時不需要連線所有的域名,可能只需要身份管理和初始畫面所需的資料。對於後續的子域名,嘗試更早地進行DNS解析(DNS預先下載)。

2.SSL握手時間

SSL握手主要是驗證伺服器證書,同時共享用於通訊的隨機金鑰。這一過程會耗費較多的時間。
遵循以下實踐優化SSL握手:
最大程度地減少應用發起的連線數。因此,也需要減少應用連線的獨有域名的數量。
複用連線:為所有的HTTPS請求新增頭(Connection:Keep-alive)
使用域分片(不理解)

3.網路型別

遵循以下實踐使應用在各種網路環境下都能正常使用:
設計時考慮不同的網路型別。                                                                                                                              

對於流媒體,最好選擇HTTP實時流或任何可用的自適應位元率流媒體技術,這些技術可以在某一時刻對可用頻寬進行動態切換,切換至當前頻寬的最佳流質量,從而提供流暢的視訊播放。 
對於非流媒體內容,需要確定在單位拉取時應該下載多少資料,並且資料量必須時自適應的。                                                                                                                                                    

同樣,在弱網狀態下,不要開啟視訊自動播放功能,節約使用者的流量第一。                                                                                                                                                                                   

對於自定義的非流媒體資料拉取,要保持對伺服器的關注。讓客戶端傳送網路特徵數,伺服器決定返回的記錄條數,這樣可以在不釋出新版本的情況下進行適應性改變。

出現失敗時,在隨機的、以指數增長的延遲後進行重試,但一定要設定最多的自動重試次數,不能不斷地刷伺服器

設定強制重新整理的間隔最短時間。當使用者明確要求重新整理時,不要立即發出請求。相反,檢查與上次請求時間間隔是否小於閥值或已經存在該請求。

使用可到達性庫發現網路狀態的變化。使用指示條向使用者展示不可用的狀態,讓使用者瞭解潛在的連線問題。

不要快取網路狀態。要始終使用網路敏感度高的任務的最新值。

基於網路型別下載內容,對於影像,可預先展示小尺寸影像,當使用者點選檢視原圖時下載原圖。 對於視訊內容,最好有一個與之關聯的預覽圖下。 可仿照WhatsApp對不同內容的網路型別進行可選設定。

預先下載:在Wi-Fi網路中預先下載使用者在後續時刻需要關注的內容。隨後可以使用快取內容,最好分次下載內容,在使用之後關掉網路連線。

相關文章