Android 優(yōu)化——網(wǎng)絡(luò)優(yōu)化

Android 優(yōu)化目錄


利用 Network Profiler 檢查網(wǎng)絡(luò)流量

  1. 接口設(shè)計(jì)

    • API設(shè)計(jì)

      App 與 Server 之間的 API 設(shè)計(jì)要考慮網(wǎng)絡(luò)請(qǐng)求的頻次矗蕊,資源的狀態(tài)等璧微。以便 App 可以以較少的請(qǐng)求來(lái)完成業(yè)務(wù)需求和界面的展示霉咨。

      比如注冊(cè)登錄一般會(huì)有兩個(gè) API,但是設(shè)計(jì) API 時(shí)應(yīng)該給注冊(cè)接口包含一個(gè)隱式的登錄整份。來(lái)避免 App 在注冊(cè)后還得請(qǐng)求一次登錄接口(有可能失敗腹泌,從而導(dǎo)致業(yè)務(wù)流程失敗)。

      比如有些請(qǐng)求可能包含了幾種小請(qǐng)求疮胖,可以單獨(dú)設(shè)計(jì)個(gè)接口,減少請(qǐng)求次數(shù)。

    • Gzip 壓縮

      使用 Gzip 來(lái)壓縮 request 和 response澎灸,減少傳輸數(shù)據(jù)量院塞,從而減少流量消耗。

    • 考慮使用 Protocol Buffer/flatBuffer 代替 JSON

    • 圖片的 Size

      圖片相對(duì)于接口請(qǐng)求來(lái)說(shuō)性昭,數(shù)據(jù)量要大得多拦止。故而也是需要優(yōu)化的一個(gè)點(diǎn)∶拥撸可以在獲取圖片時(shí)告知服務(wù)器需要的圖片的寬高创泄,以便服務(wù)器給出合適的圖片,避免浪費(fèi)括蝠。以七牛為例鞠抑,可以在請(qǐng)求圖片的 url 中添加諸如質(zhì)量,格式忌警,width搁拙,height 等 path 來(lái)獲取合適的圖片資源。對(duì)于不同的設(shè)備不同網(wǎng)絡(luò)返回不同的內(nèi)容不同分辨率圖片法绵。

    • 增量更新

      需要數(shù)據(jù)更新時(shí)箕速,可考慮增量更新。如常見(jiàn)的服務(wù)端進(jìn)行 bsdiff朋譬,客戶端進(jìn)行 bspatch盐茎。

    • 大文件下載

      支持?jǐn)帱c(diǎn)續(xù)傳,并緩存 Http Resonse 的 ETag 標(biāo)識(shí)徙赢,下次請(qǐng)求時(shí)帶上字柠,從而確定是否數(shù)據(jù)改變過(guò),未改變則直接返回 304狡赐。

  2. 網(wǎng)絡(luò)緩存窑业,減少延遲節(jié)省流量。

  3. 打包網(wǎng)絡(luò)請(qǐng)求

    當(dāng)接口設(shè)計(jì)不能滿足業(yè)務(wù)需求時(shí)枕屉。例如可能一個(gè)界面需要請(qǐng)求多個(gè)接口常柄,或是網(wǎng)絡(luò)良好,處于 Wifi 狀態(tài)下時(shí)我們想獲取更多的數(shù)據(jù)等搀擂。這時(shí)就可以打包一些網(wǎng)絡(luò)請(qǐng)求西潘,例如請(qǐng)求列表的同時(shí),獲取 Header 點(diǎn)擊率較高的的 item 項(xiàng)的詳情數(shù)據(jù)哨颂,響應(yīng)體里包含更多的內(nèi)容喷市。

  4. 監(jiān)聽(tīng)相關(guān)狀態(tài)

    監(jiān)聽(tīng)設(shè)備的狀態(tài):休眠狀態(tài)、充電狀態(tài)咆蒿、網(wǎng)絡(luò)狀態(tài)东抹,結(jié)合 JobScheduler 來(lái)根據(jù)實(shí)際情況做網(wǎng)絡(luò)請(qǐng)求。比方說(shuō) Splash 閃屏廣告圖片沃测,可以在連接到 Wifi 時(shí)下載緩存到本地; 新聞?lì)惖?App 可以在充電缭黔,Wifi 狀態(tài)下做離線緩存。

  5. 弱網(wǎng)優(yōu)化

    除了正常的網(wǎng)絡(luò)優(yōu)化蒂破,還需考慮到弱網(wǎng)情況下 App 的表現(xiàn)馏谨。

    一般來(lái)說(shuō),網(wǎng)絡(luò)延遲在 60ms 內(nèi)是 OK 的附迷,超過(guò) 200ms 就比較糟糕了惧互。弱網(wǎng)優(yōu)化,本質(zhì)上是在弱網(wǎng)的情況下能讓用戶流暢的使用喇伯。

    • 壓縮/減少數(shù)據(jù)傳輸量
    • 利用緩存減少網(wǎng)絡(luò)傳輸
    • 針對(duì)弱網(wǎng)(移動(dòng)網(wǎng)絡(luò))喊儡,不自動(dòng)加載圖片
    • 界面先反饋,請(qǐng)求延遲提交稻据。例如艾猜,用戶點(diǎn)贊操作,可以直接給出界面的點(diǎn)贊成功的反饋捻悯,使用 JobScheduler 在網(wǎng)絡(luò)情況較好的時(shí)候打包請(qǐng)求匆赃。
  6. 建立取消機(jī)制,頁(yè)面跳走了要取消請(qǐng)求今缚,且不再接收數(shù)據(jù)算柳。

  7. GET 請(qǐng)求失敗增加重試機(jī)制,POST 請(qǐng)求可能因?yàn)檠訒r(shí)姓言,不要有重試機(jī)制瞬项,要防止頻繁請(qǐng)求相同的接口。重試機(jī)制必須要有明顯的結(jié)束條件何荚。

  8. 避免重復(fù)上傳與下載滥壕。避免輪詢。

  9. IP 直連兽泣,避免 DNS 解析绎橘,即耗時(shí)又有被劫持風(fēng)險(xiǎn)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末唠倦,一起剝皮案震驚了整個(gè)濱河市称鳞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌稠鼻,老刑警劉巖冈止,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異候齿,居然都是意外死亡熙暴,警方通過(guò)查閱死者的電腦和手機(jī)闺属,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)周霉,“玉大人掂器,你說(shuō)我怎么就攤上這事【阆洌” “怎么了国瓮?”我有些...
    開(kāi)封第一講書人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)狞谱。 經(jīng)常有香客問(wèn)我乃摹,道長(zhǎng),這世上最難降的妖魔是什么跟衅? 我笑而不...
    開(kāi)封第一講書人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任孵睬,我火速辦了婚禮,結(jié)果婚禮上伶跷,老公的妹妹穿的比我還像新娘肪康。我一直安慰自己,他們只是感情好撩穿,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布磷支。 她就那樣靜靜地躺著,像睡著了一般食寡。 火紅的嫁衣襯著肌膚如雪雾狈。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,772評(píng)論 1 290
  • 那天抵皱,我揣著相機(jī)與錄音善榛,去河邊找鬼。 笑死呻畸,一個(gè)胖子當(dāng)著我的面吹牛移盆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播伤为,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼咒循,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了绞愚?” 一聲冷哼從身側(cè)響起叙甸,我...
    開(kāi)封第一講書人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎位衩,沒(méi)想到半個(gè)月后裆蒸,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡糖驴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年僚祷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了佛致。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辙谜,死狀恐怖俺榆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情筷弦,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布抑诸,位于F島的核電站烂琴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蜕乡。R本人自食惡果不足惜奸绷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望层玲。 院中可真熱鬧号醉,春花似錦、人聲如沸辛块。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)润绵。三九已至线椰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尘盼,已是汗流浹背憨愉。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留卿捎,地道東北人配紫。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像午阵,于是被迫代替她去往敵國(guó)和親躺孝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,905評(píng)論 2 89
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理底桂,服務(wù)發(fā)現(xiàn)括细,斷路器,智...
    卡卡羅2017閱讀 134,629評(píng)論 18 139
  • 1戚啥、通過(guò)CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明先生_X自主閱讀 15,969評(píng)論 3 119
  • 人類簡(jiǎn)史筆記 本書闡述了人類的三次巨大革命:認(rèn)知革命猫十、農(nóng)業(yè)革命和科技革命览濒。 認(rèn)知革命源于智人開(kāi)始能夠虛構(gòu)一些事物呆盖,...
    靜賞月之美閱讀 272評(píng)論 0 0
  • 重點(diǎn)推薦每天5分鐘閱讀版:文件簡(jiǎn)潔、有視頻贷笛、有延伸 5分鐘閱讀:請(qǐng)懷疑我講的_《顛覆式創(chuàng)新》01 5分鐘閱讀:我要...
    神助閱讀 2,699評(píng)論 2 18