iOS 网络性能优化之路
生活随笔
收集整理的這篇文章主要介紹了
iOS 网络性能优化之路
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、度量網絡性能
- 1.網絡帶寬
- 2.網絡延遲
- 3.設備電量
- 二、優化網絡操作
- 1.減少請求帶寬
- 2.降低請求延遲
- 3.避免網絡請求
- 三、iOS用戶都希望應用能夠立刻響應每個請求
一、度量網絡性能
1.網絡帶寬
用于描述無線網絡性能的最常見度量指標就是帶寬。在數字無線通信中,網絡帶寬可以描述為兩個端點之間的通信通道每秒鐘可以傳輸的位數。現代無線網絡所能提供的理論帶寬是很高的。不過請記住,運營商與網絡設備提供商引用的帶寬數字常常是該項技術的理論最大值,網絡設備使用的實際帶寬可能與這個最大值之間存在很大的偏差。
2.網絡延遲
度量網絡性能的第2個因素是網絡延遲,指的是網絡包在兩個端點間一次往返所需的時間。無線運營商很少會提到網絡的延遲數據,不過延遲卻會對應用的實際性能造成很大影響。與帶寬一樣,有很多因素會影響到應用遭受的延遲情況。主要因素就是用于將設備連接到外界的無線網絡技術本身的延遲。
3.設備電量
iOS設備的運行通常使用的都是電池,應用采取的每個動作都會消耗電量。iOS設備上電量的使用大戶主要有:
除了屏幕顯示之外,應用能夠控制上面的大多數。
二、優化網絡操作
1.減少請求帶寬
- 使用高效的數據交換格式,JSON與XML是用于請求與響應體的常見的數據編碼方式。壓縮模式的效率在很大程序上取決于待壓縮的數據,不過通常情況下JSON都是一種更為高效的模式。
- Web瀏覽器對請求壓縮的支持并不太好,因為瀏覽器不知道目標服務器是滯能夠支持對請求的解壓縮。如果服務器無法理解壓縮模式,那么請求就會被丟棄,客戶端應用將無法得到響應。
- 在可能的情況下使用預先壓縮的數據(使用專門算法對諸如音頻,視頻和圖像進行壓縮或按比例縮放以適應通道與設備)
壓縮每一個請求與響應負載(iOS網絡請求中都是默認開啟壓縮的,接收到負載會自動解壓縮并以最初的格式呈現在代碼中。解壓縮的計算代價要比傳輸10倍字節的通信代價低,因此,激活響應壓縮幾呼是有益無害的)
如果想禁用壓縮,應該可以通過清除自動設定的Accept-Encoding頭來實現。如相代碼演示了如何清除這個頭:
2.降低請求延遲
- 實現上,在iOS設備上,我們沒有辦法降低單個網絡請求的延遲,不過可以通過一些技術來降低多個請求的延遲。
- 降低請求延遲有兩項最佳實踐:在單個TCP連接上發送HTTP請求,以管道的形式發送HTTP請求,從而優化全雙工TCP連接的使用。網絡延遲包括在手機與運營商網絡間建立連接的時間,建立TCP連接的時間,可能還有協商SSL連接的時間,以及發送與接收HTTP請求的時間。 應用可以按照順序執行所有隊列請求,在這個過程中一直保持激活相同的連接,避免建立多個TCP連接開銷。
可以輕松為NSURLRequest開啟管道支持,如下:
不過,并非所有的服務器都支持HTTP管道
- Apache和IIS都支持管道,無需任何額外的配置。
3.避免網絡請求
- 通過HTTP緩存機制的基本原理,在iOS應用中利用這些規則,可以在本地緩存內容以避免不必要的網絡流量。
- HTTP被設計作為瀏覽器與服務器之間的通信,緩存機制也是針對這種使用模式的。iOS提供了一種機制來利用標準的HTTP緩存,以及采取相應的行為。通過NSURLRequest發出的每個請求都會經過緩存組件。該組件是NSURLCache或其子類的實例。
- 在iOS中有一種奇怪的現象,即在某些情況下,應用中的系統組件會將緩存的內存容量設為0,這就禁用了緩存。解決無法解釋的行為的一種方式就是通過自已的實現子類化NSURLCache。拒絕將內存緩存大小設為0.
三、iOS用戶都希望應用能夠立刻響應每個請求
移動產業有這樣一條原則,即屏幕越小,用戶越沒耐心。提供讓用戶樂于使用的應用意味著要珍惜用戶的時間,就像珍惜你自己的時間一樣。通過壓縮請求與響應來優化應用所使用的帶寬,通過管道化請求避免不必要的延遲,甚至通過緩存響應來避免冗余的網絡請求都會加速應用并改進用戶體驗。
總結
以上是生活随笔為你收集整理的iOS 网络性能优化之路的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机之父的童年故事教案,计算机之父童年
- 下一篇: 什么是Mirai僵尸网络