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