為什么下載小電影時,進(jìn)度總是卡在99%?
你是小阿巴,深夜獨自一人,正在下載一部《藝術(shù)與動作》的學(xué)習(xí)資料。

眼看著進(jìn)度條已經(jīng)到了 99%,你激動地搓著小手,心想:馬上就能欣賞大師的作品了!

結(jié)果半小時過去了,進(jìn)度條死死卡在 99%。
你懷疑是網(wǎng)絡(luò)問題,狂按路由器重啟鍵,發(fā)現(xiàn)網(wǎng)頁秒開、網(wǎng)速飛快;也試過重新下載,但是仍然死死卡在 99%,紋絲不動、穩(wěn)如泰山。
你絕望地仰天長嘯:不,為什么!

這時,你面前出現(xiàn)一位程序員,正是下片無數(shù)的魚皮:愚蠢的小阿巴,想知道真相么?給我兩個圓圓的東西,我就告訴你 2 個不為人知的秘密。
于是,你從褲襠中掏出 2 個圓圓的硬幣 ??,交給了他。

本文對應(yīng)視頻版:
一、產(chǎn)品經(jīng)理的欺騙
魚皮:你看到的進(jìn)度條,其實是假的!
你震驚了:什么?!假的?

魚皮:沒錯,很多產(chǎn)品經(jīng)理會要求程序員制作 虛假進(jìn)度條。
舉個例子,假設(shè)有兩個下載軟件,完成時間都是 100 秒。A 軟件的進(jìn)度條只用 10 秒就顯示了 99%,最后 1% 花了 90 秒;B 軟件老老實實勻速加載,10 秒才顯示了 10%,你會覺得哪個更快?

你脫口而出:當(dāng)然是 A 了!
魚皮笑道:這就對了,雖然實際速度一樣,但 A 給人的感覺就是更快,也更容易讓人留下來等待,這就是產(chǎn)品經(jīng)理的詭計。
你恍然大悟:所以前面 99% 都是假象,只是為了安慰我?
魚皮:沒錯,這也是利用了人的心理,相比于一片空白的等待,哪怕是個假進(jìn)度條,也能讓用戶焦慮感大大降低。這也是我們平時開發(fā)網(wǎng)站的經(jīng)典技巧,甚至?xí)谶M(jìn)度條上加點小動畫,讓等待變得有趣起來。

你感嘆道:可惡啊,原來我一直被套路了!
魚皮:不過除了你看到的產(chǎn)品策略,背后可能還有更硬核的技術(shù)原因。
二、背后的技術(shù)原理
魚皮:你知道迅雷這種下載工具是怎么工作的嗎?
你搖了搖頭。
魚皮:它們用的是 P2P 協(xié)議,簡單說就是 “人人為我,我為人人”。你下載文件時,不是從一個服務(wù)器下載,而是從成千上萬個下載過這個文件的用戶那里,同時下載 不同的文件小塊。

下載完成后,拼接小塊成為完整文件。

你有些驚訝:那豈不是很快就能下載完?為什么還會卡在 99% 呢?
魚皮:正是因為數(shù)據(jù)來源太多太雜,如果某個用戶網(wǎng)速超慢或者中途掉線,最后就有可能一直卡住,等待最慢的塊;而且如果因為網(wǎng)絡(luò)不穩(wěn)定,導(dǎo)致傳輸過程中數(shù)據(jù)損壞了怎么辦?

你:對哦,我怎么發(fā)現(xiàn)這種情況呢?
魚皮:這時就需要 塊校驗。每個數(shù)據(jù)塊都有一個獨特的 “指紋”,叫做哈希值。收到每個塊后、以及 全部塊下載完成時(進(jìn)度 99%),軟件會檢查每一塊數(shù)據(jù)的哈希值,和原始的哈希值對比。如果某個塊的哈希值對不上,軟件會直接丟棄這個塊,然后嘗試從其他用戶重新下載。

但如果這個塊的來源已經(jīng)離線了,或者數(shù)據(jù)本身就有問題,那你就只能死磕在 99% 了……

你恍然大悟:原來如此,最后 1% 不是在下載,而是在驗證和合并文件小塊!
魚皮:沒錯,所以 進(jìn)度條不是恒定速率的,可別小瞧這 1%!
你撓了撓頭:那有什么解決辦法嗎?

魚皮:當(dāng)然有了,優(yōu)秀的產(chǎn)品會給用戶明確的反饋,比如顯示 “正在校驗文件”,讓用戶知道程序沒有卡死,只是在認(rèn)真干活。這樣用戶心里有數(shù),就不會那么焦慮了。

你若有所思,然后抄起桌上的鍵盤一把朝魚皮的臉上砸去:我 ** 問的是這個么?!

結(jié)果你發(fā)現(xiàn),剛剛的一切竟然都只是你的幻覺。
唉,下次看到進(jìn)度條 99% 別著急,早點休息別熬夜,保護(hù)好自己的身體才是正事哦~

有沒有可能,你看到的進(jìn)度條,其實是假的?!
浙公網(wǎng)安備 33010602011771號