APP-細說APP網絡深度優化與網絡安全

前言

說到APP優化,我們也可以從很多方面進行優化,從包大小、頁面流暢度、內存佔用、數據緩存、網絡數據安全等等來優化加固我們的APP,每一個點展開又有很多需要將的,我以前也專門寫了一篇關於APP性能優化的博文,如下:
👉《iOS-性能優化的那些事》
在移動端APP網絡優化也是APP性能優化的一個非常重要的一個點,而且99.99%的APP都會伴隨着網絡交互;
在此,我將對APP網絡優化和網絡安全做一個詳細的總結,主要從流量、質量、安全方面去說,如要結構點如下:
在這裏插入圖片描述

流量消耗

先說一個親身經歷過得事情,以前在一家公司開發了一款APP,有一點客服反饋有個上海老大爺打電話過來罵人,手機裝了我們的APP,一個晚上用掉人家一兩個G;後來公司也主動幫人家承擔了這部分的流量資費,關鍵是15年流量資費還很高的,這個APP當然不是我寫的,是安卓的小夥伴!

即使流量現在價格不是很貴了,但是儘可能的幫用戶節省流浪也是非常應該的!

檢測流量消耗

相信大家在開發APP的時候肯定會做一些埋點和日誌上報的功能,我們也可以把網絡請求的監控也做進去,我們可以檢測用戶在一段時間內的流量消耗,計算流量的均值和峯值等等,並上報流量接口,這些我們在日誌或者埋點系統裏面都可以記錄,然後上傳給服務端,然後進行數據分析,找出流量消耗的不足之處。

數據緩存

說到緩存,這也是一個非常大的一個點,有時間也可以展開說,我平時的博客關於緩存也講到很多,緩存的一個非常重要的好處就是提好了頁面加載速度,提高用戶的使用體驗;但是緩存也可以替用戶節省流量的消耗。
APP數據的緩存無非是列表接口的緩存、WebView的緩存,關於WebView的緩存我也單獨寫過,如下:
👉《iOS-WKWebView緩存並保證實時性》
👉《iOS-UIWebView緩存並保證實時性》
我們還可以做資源包下發預製加載等,這裏也不展開了!
在這裏插入圖片描述

數據壓縮

關於數據壓縮,這邊主要想講的就是資源文件的數據壓縮了,主要在網絡上傳和網絡下載方面;

1.數據上傳
比如上傳圖片數據的時候是不是需要原圖高清圖,現在相機的像素都高,我們是不是可以搞了壓縮一下圖片或者視頻再上傳,就像微信發送圖片的時候,用戶可以選擇壓縮或者原圖;

2.數據下載
下載目前也是APP的大頭了,一般APP都是請求下載的數據比較多;我們在加載資源的時候可以選擇加載壓縮資源,比如微信的朋友圈,小圖的時候我們可以加載縮略圖,要是點擊查看大圖的時候才考慮加載大圖原圖;

交互頻率

數據交互如果比較頻繁會消耗用戶的流量,而且用戶體驗不好,還有一個非常重要的原因就是頻繁的網絡請求也會比較損耗手機的電量;所以我們可以合併一些能合併的網絡請求,比如日誌上報的時候。

請求釋放

在APP開發的過程中,一般就是一進入頁面就進行網絡請求,然後等待結束加載數據,但是比如網絡請求比較緩慢(可能是數據量比較大,也有可能是網絡狀況不好),用戶不想等了,直接返回頁面銷燬了,但是我們的大部分網絡請求是單獨封裝的,但是網絡請求還在繼續請求中,這裏數據、性能、內存、電量的問題就出來了,所以大家在封裝網絡請求的時候要把頁面銷燬就取消網絡請求的場景考慮進去!

網絡質量

請求速度

網絡請求的速度是影響用戶體驗的一個非常重要的原因,所以服務端也要想着來提高api的交互速度,爲此我們可以通過下面的幾個方案來優化交互速度,如下:
a.域名合併,減少了DNS調用次數,降低了DNS劫持風險;
b.ip直連,去除DNS的解析步驟;
c.api緩存,比如redis緩存;
d.數據資源壓縮上傳;

請求質量

監控網絡請求質量和請求速度,然後記錄日誌進行上報,監控完整的網絡請求鏈路;

服務器壓力

api的設計也要考慮到api的壓力以及服務器的壓力,防止因爲壓力太大導致接口掛掉,從而影響用戶的體驗;

數據處理

服務端在給APP端提供數據的時候,避免讓APP端進行數據處理或者運算,比較APP的內存資源和運算資源有限,不要過度消耗浪費APP資源;
比如,我上家公司的用戶信息裏面有用戶的年齡,但是服務端給的不是直接的年齡數據,而是給的生日時間戳,需要APP端自己去計算年齡,但是我們知道
NSDateFormatter又是重大內存開銷對象,在列表處理的時候又比較消耗內存,所以建議關於運算的一些東西最好在服務端計算好,這種不僅僅保證APP的性能問題,還是一種安全問題!

網絡安全

我們在APP端的網絡安全問題一般是APP抓包、DNS劫持、服務器安全,詳細如下:

在這裏插入圖片描述

APP抓包

說到抓包,侵入者可以選擇抓取數據來竊密APP的關鍵數據,然後模擬請求,做一些APP不好控制的事情,在此我們可以使用Https進行網絡請求,還可以禁止網絡請求設置代碼;
還可以把請求頭和請求體進行加密傳輸,多一次保證!
但是需要說明一點的是,沒用絕對的安全,只要是人設計的加密就有人設計解密,窺視心裏在作怪!

DNS劫持

DNS劫持,由於域名解析爲IP這個過程中,其解析是基於UDP 協議實現,所以報文是明文狀態,可能會在請求過程中被監測,然後攻擊者做一些自己的處理,比如返回假的IP地址或者什麼都不做使請求失去響應,其效果就是對特定的網絡不能反應或訪問的是假網址。根本原因就是以下兩點:
a.惡意攻擊,攔截運營商的解析過程,把自己的非法東西嵌入其中。
b.運營商爲了利益或者一些其他的因素,允許一些第三方在自己的鏈接裏打打廣告之類的。
如何防止DNS劫持?
可以通過上面我說的IP直連,自己在APP解析!
推薦一篇寫的比較詳細的關於DNS的,如下:
👉《APP網絡優化之DNS優化實踐》

服務器安全

服務器安全可以從物理安全和網絡安全來說
a.物理安全,服務器要考慮比如斷電、斷網等情況下導致的安全問題;
b.網絡安全,防止服務器被攻擊、被爬蟲等問題;
所以,服務器的備份機制和數據備份機制和重要,還要限制同一IP的請求次數和間隔等;

結束語

如有不足之處還望各位大佬不吝賜教,也歡迎大家加羣或者叫我QQ討論交流學習!

在這裏插入圖片描述

發佈了156 篇原創文章 · 獲贊 389 · 訪問量 63萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章