
2015-07-06 |&n ↑bsp; 發布者:梁國(guó)芳 &nbs∞↔ p; | &n☆ bsp;查看(kàn):3320次
IT新聞http請(qǐng)求遇到(dào)的(de)問(∏wèn)題
在App開(kāi)發過程中,通(tōng)常是(shì)用(yò★γng)無線網絡去(qù)做(zuò)測試,這(zhè¶®α)樣網絡的(de)連通(tōng)率、速度以及響應時(s÷♣©hí)間(jiān)都(dōu)是(sh♣☆ì)處在一(yī)個(gè)相(xiàn↑"g)對(duì)理(lǐ)想的(de)情況λ±下(xià),但(dàn)是(shì)在App發布後,用(y↕♥òng)戶使用(yòng)場(chǎng) δ景往往是(shì)2G、3G,以及一(yī)些(xiē)網絡水(shuǐ)平初↑σ♦級的(de)地(dì)區(qū),網速和(hé)連通(tōng)≈∞≠率都(dōu)在一(yī)個(gè)不(bù)穩定甚至極低(dī)的(€≥'de)水(shuǐ)平,這(zhè)時(shí),一(∞ yī)系列的(de)問(wèn)題随之而來(lái)™∏♠,其中我們主要(yào)討(tǎo)論兩點:
如(rú)何去(qù)優化(huà)?
應用(yòng)向服務器(qì)發送http請Ω•(qǐng)求,一(yī)般都(dōu)是(s↑§™hì)調用(yòng)的(de)系統接口或者第三方接口(比如(rú)OKHttεp):

這(zhè)個(gè)時(shí)候,我們可(kě)以在應 &用(yòng)調用(yòng)接口時(s↔$hí),加一(yī)個(gè)收集模塊來(lái)采集http信息 §,如(rú)圖:

Collection module可(kě)以用(yòng)不(bù)同的(φde)實現(xiàn)方式:iOS利用(yòng)Runtime通¥♣(tōng)過代碼注入的(de)方式去(qù)獲取相(xiàng)關信息♥±;Android通(tōng)過自(zìε•)定義URLStreamHandler去(qù)獲取÷♠↑http信息,之後通(tōng)過一(yī)些(xiē)統計(j∏✔Ω♦ì)工(gōng)具可(kě)以直觀地(dì)♠×去(qù)分(fēn)析和(hé)優化(huà)應用(yòng)的(de)'™網絡模塊。
如(rú)何利用(yòng)網絡監控去(qù♣ ©)做(zuò)優化(huà)?
那(nà)麽,究竟該如(rú)何利用(yòng)好(hǎo)網絡監控®↓來(lái)進行(xíng)應用(yòng)優化(huà)?開(kāi)發者≈✔☆可(kě)以從(cóng)http響應時(shí)間(jiān)、♦₩http錯(cuò)誤率、請(qǐng)求量(r'λ≈pm)和(hé)Data I/O四個(gè)維度監ε£≤∞控http請(qǐng)求,并監測每個(gè)url的(de)運營商、終↓₩端設備、錯(cuò)誤碼。同時(shí),地≈Ω (dì)理(lǐ)定位功能(néng)可(kě)以提供每個(gè)地(dì)÷ ♠≠區(qū)網絡狀況的(de)平均值,方便開(kāi)發者去(qù)分<ε(fēn)析和(hé)優化(huà)。
通(tōng)過響應時(shí)間(jiān)的(φ÷de)長(cháng)短(duǎn),可(kě)以判斷哪個(gè)url去(↓¥qù)優化(huà),如(rú)果響應時(shí)間(jiānφ→Ω)長(cháng),是(shì)不(bù) <§是(shì)後台查詢過慢(màn)?還(háiπ←)是(shì)因為(wèi)運營商基站(zhàn)建的(de)λ"←少(shǎo)網絡信号差?
通(tōng)過錯(cuò)誤率,可(kě)以知(zhī)道(d™®Ω<ào)訪問(wèn)某個(gè)url時(shí)最∏∏™多(duō)的(de)錯(cuò)誤碼是(shì)多(duō)少(shǎo)$→→,根據錯(cuò)誤碼去(qù)确定是(shì)請(qǐ∏∑"≤ng)求錯(cuò)誤還(hái)是(shì)服務器(qì)錯(±★cuò)誤,從(cóng)而縮小(xiǎo)>&問(wèn)題的(de)查找範圍。
通(tōng)過查看(kàn)url的(de↑₹¶α)請(qǐng)求量,可(kě)以去(qù)推斷用(yòng)戶↕↔↕的(de)喜好(hǎo),從(cóng)而做(¶×zuò)一(yī)些(xiē)定制(zhì)化¶₩≥(huà)的(de)服務,也(yě)可(kě↔↔)以通(tōng)過這(zhè)個(gè)指标去(qù)确定A pp端發請(qǐng)求頻(pín)率是(shì)否正常。
通(tōng)過Data I/O,可(kě)≈↓以知(zhī)道(dào)某個(gè)url的(de)請(qǐng)求±Ω×數(shù)據大(dà)小(xiǎo)是(shì)否正常,是(shì)否流量λγ'↔過大(dà)可(kě)以進行(xíng)壓縮從(cóng)而節省用(yòng)Ω÷↓ 戶的(de)費(fèi)用(yòng)。

當然,每個(gè)指标不(bù)是(shì)獨立的(de),而是(shì)♣應該綜合來(lái)判斷。舉一(yī)個(gè)例子(zǐ),做(zu≤¥ò)一(yī)個(gè)在線圖庫的(de)¥£應用(yòng),用(yòng)戶反映一(↔π₩™yī)直刷不(bù)出圖,那(nà)就(jiù)可(kě)以這(zh©•§è)樣推斷一(yī)下(xià):看(kàn)http響應時(shí)間(≈× ÷jiān),如(rú)果正常,有(yǒu)可(kě)能(néng)↔™是(shì)App收到(dào)數(shù)據後顯示有(÷£φyǒu)問(wèn)題,如(rú)果過長(cháng),那(n८Ω)麽可(kě)能(néng)是(shì)服務器(qì)端問(wèn)題;₹<δ再看(kàn)錯(cuò)誤率,如(rú)果很(hě÷€☆↓n)高(gāo),那(nà)麽有(yǒu)可(kě)能(néng✘₽<)是(shì)服務器(qì)返回結果有(yǒu)問(wèn)題✔₹,如(rú)果不(bù)高(gāo),那 →≠ (nà)麽有(yǒu)可(kě)能(néng)是(shì≈¥•)因為(wèi)網絡信号差導緻的(de)。
這(zhè)個(gè)時(shí)候,再看(kàn)×∞一(yī)下(xià)請(qǐng)求量和(hé)Data☆÷ ε I/O,如(rú)果請(qǐng)求量很(hěn)小(xiǎo),σβ∏但(dàn)是(shì)Data I/O很(hěn)高(gāo),那(nà)麽€π" 是(shì)否可(kě)以優化(huà)http請(qǐnδ§₽g)求策略?如(rú)果改成每次請(qǐng★φ∑)求一(yī)屏的(de)數(shù)據,根據用(yòng₹∞♥)戶的(de)翻頁情況發送多(duō)次請(qǐng)求,✘₹₽¶而不(bù)是(shì)一(yī)次去(qù)請δπδ←(qǐng)求幾頁數(shù)據,那(nà)麽這(zhè)•∞®δ樣數(shù)據總量沒變,但(dàn)是(shì)用(yòng)戶看(k↕₽"àn)到(dào)的(de)效果卻是(shì)每翻一(y☆$♠•ī)頁,隻要(yào)很(hěn)少(shǎo)的(de)時(shí)間(ji€<ān)就(jiù)可(kě)以顯示出圖片,這(zhè)樣就(jiù)可(kě)≈☆↕以提升用(yòng)戶體(tǐ)驗。
簡單論述了(le)網絡問(wèn)題對(duì)于移σ₹→動App産生(shēng)的(de)影(yǐng)響,以及如"¶↓(rú)何去(qù)監控http請(qǐ✘≥>ng)求并做(zuò)出優化(huà)。當然,實現ε×(xiàn)監控的(de)方式有(yǒu)很(hěn)多(duφ$δō),也(yě)可(kě)以有(yǒu)很(hěn)多(duō)技(j₽∑≤ì)術(shù)上(shàng)的(de)玩(wán)法→±☆≤,但(dàn)無論技(jì)術(shù)實現(xiàn)得(de)有(yǒu)<×☆多(duō)好(hǎo),如(rú)何優化(huà)App?提升用(yòn¶g)戶體(tǐ)驗和(hé)留存率,才是(shì)開(kāi)發π♦者最該關心的(de)問(wèn)題。
