IP蛙卤,TCP 和 HTTP學(xué)習(xí)筆記

原文:IP炒考,TCP 和 HTTP

超時處理

我們都有在網(wǎng)絡(luò)不太好的情況下使用 app 的經(jīng)歷拂蝎。很多 app 大概 15 秒左右就會結(jié)束請求并且反饋一個超時信息穴墅。這種設(shè)計其實是很不友好的。應(yīng)該給用戶一個他們可以理解的友好提示温自,諸如“你好封救,現(xiàn)在網(wǎng)絡(luò)狀況不太好,您需要多等一會兒捣作。”鹅士。但是即便網(wǎng)絡(luò)狀況不好券躁,只要連接還在,TCP 都會保證將請求發(fā)出去并且會一直等待響應(yīng)的返回掉盅,只是時間長短的問題也拜。

從另一個角度來說:在較慢的網(wǎng)絡(luò)中,請求-響應(yīng)的RTT時間可能會有 17 秒趾痘。如果 15 秒就決定中止請求慢哈,就算用戶有足夠的耐心,他們也沒機(jī)會等到想要的操作結(jié)果永票。反過來卵贱,如果我們給出用戶相應(yīng)的提示信息滥沫,而他們又剛好愿意多等一會,用戶可能會更喜歡使用這樣的應(yīng)用键俱。

一直以來都有一種誤解兰绣,用重發(fā)請求來解決上面的問題。注意编振,這不是問題的關(guān)鍵缀辩,因為 TCP 有自己的重發(fā)機(jī)制。

正確的處理方式應(yīng)該是:每當(dāng)發(fā)起一個請求的時候踪央,同時啟動一個 10 秒計時器臀玄。如果請求在 10 秒之內(nèi)返回,就把計時器停掉畅蹂。如果超過 10 秒健无,可以給用戶一個提示“網(wǎng)絡(luò)不好,請稍后魁莉〔墙В”,我建議再給用戶一個取消按鈕旗唁,讓他們可以自行選擇等待還是取消請求畦浓,當(dāng)然提示信息的具體內(nèi)容和是否配備取消按鈕,這個可以視乎各 app 的情況去決定检疫⊙惹耄總而言之,開發(fā)者最好不要直接替用戶做決定屎媳,比如直接中止他們的請求夺溢。

只要連接雙方的 IP 地址是不變的、可用的烛谊,連接就一定會是“活躍”的风响。如果把 iPhone 從 Wi-Fi 連接切換到 3G 網(wǎng)絡(luò),這樣連接就會變得不可用丹禀,因為手機(jī)的 IP 地址發(fā)生了變化状勤,基于原 IP 地址創(chuàng)建的路由自然是失效的。

緩存

看看第一個例子中發(fā)送的這段 header 信息:

If-None-Match: "a54907f38b306fe3ae4f32c003ddd507"
這表示客戶端本地已經(jīng)針對所請求的資源做過緩存了双泪,如果服務(wù)器上的資源有過更新持搜,需要將最新的資源返回給客戶端,否則不需要返回焙矛。如果自己構(gòu)建客戶端和服務(wù)器的數(shù)據(jù)通信葫盼,建議充分利用這個機(jī)制。這種機(jī)制叫做 HTTP ETag村斟,如果使用得當(dāng)贫导,會對通訊的速度有明顯的優(yōu)化抛猫。

記住“最快的請求是不發(fā)請求”。舉個極端的例子脱盲,拿一個請求來說邑滨,哪怕你有最好的網(wǎng)絡(luò),請求的數(shù)據(jù)量極小钱反,有超快的服務(wù)器掖看,你也不大可能在 50ms 內(nèi)拿到請求的響應(yīng)。這還只是一個請求面哥。想想吧哎壳,如果有可能在本地創(chuàng)建相同的數(shù)據(jù),而且耗時小于 50ms尚卫,那就不要發(fā)這樣的請求归榕。

針對已請求的資源,只要服務(wù)器上對應(yīng)的資源具備在一定時間內(nèi)不發(fā)生變化特性吱涉,建議在本地緩存起來刹泄。注意檢查 header 中緩存過期的相關(guān)屬性,也可以直接利用 NSURLSession 中的 NSURLRequestUseProtocolCachePolicy 策略怎爵。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末特石,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鳖链,更是在濱河造成了極大的恐慌姆蘸,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芙委,死亡現(xiàn)場離奇詭異逞敷,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)灌侣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門推捐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人侧啼,你說我怎么就攤上這事玖姑。” “怎么了慨菱?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長戴甩。 經(jīng)常有香客問我符喝,道長,這世上最難降的妖魔是什么甜孤? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任协饲,我火速辦了婚禮畏腕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘茉稠。我一直安慰自己描馅,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布而线。 她就那樣靜靜地躺著铭污,像睡著了一般。 火紅的嫁衣襯著肌膚如雪膀篮。 梳的紋絲不亂的頭發(fā)上嘹狞,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機(jī)與錄音誓竿,去河邊找鬼磅网。 笑死,一個胖子當(dāng)著我的面吹牛筷屡,可吹牛的內(nèi)容都是我干的涧偷。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼毙死,長吁一口氣:“原來是場噩夢啊……” “哼燎潮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起规哲,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤跟啤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后唉锌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體隅肥,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年袄简,在試婚紗的時候發(fā)現(xiàn)自己被綠了腥放。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡绿语,死狀恐怖秃症,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吕粹,我是刑警寧澤种柑,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站匹耕,受9級特大地震影響聚请,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一驶赏、第九天 我趴在偏房一處隱蔽的房頂上張望炸卑。 院中可真熱鬧,春花似錦煤傍、人聲如沸盖文。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽五续。三九已至,卻和暖如春蒋失,著一層夾襖步出監(jiān)牢的瞬間返帕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工篙挽, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留荆萤,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓铣卡,卻偏偏與公主長得像链韭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子煮落,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,490評論 2 348

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

  • 個人認(rèn)為敞峭,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,051評論 0 8
  • 1.這篇文章不是本人原創(chuàng)的蝉仇,只是個人為了對這部分知識做一個整理和系統(tǒng)的輸出而編輯成的旋讹,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,049評論 6 174
  • 1)OSI與TCP/IP各層的結(jié)構(gòu)與功能葫松,都有哪些協(xié)議。 OSI分層 (7層):物理層底洗、數(shù)據(jù)鏈路層腋么、網(wǎng)絡(luò)層、傳輸層...
    ldlywt閱讀 2,308評論 0 26
  • 送你蒲公英亥揖,送你希望與自由
    XOXOWing閱讀 94評論 0 0
  • 一生党晋,在不斷的歷練 由最初的稚嫩,成長為肩負(fù)重任的沉穩(wěn) 由習(xí)慣煉就的屈服,再次淪為糊涂 由簡單歸于簡單 由平淡歸于平淡
    小汐丫頭閱讀 106評論 0 0