下載最怕什麼,那絕對是進度條:99%。 程序員
這是一個充滿魔力的數字,曾讓我狂躁、焦慮,甚至激動得想砸鍵盤錘電腦扔手機。服務器
好比下載學習資料或看動做大片,苦苦等待2小時,好不容易下到99%,覺得2秒後就能享受大片的美妙,步入極樂世界。網絡
結果半小時過去了,進度條死死卡在99%,任你千兆光纖,專線寬帶,愣是一絲不動,穩如泰山。學習
再去檢查路由器,狂按重啓鍵,發現網絡一切正常,網頁秒開,惟獨進度條上的99%永恆不變。spa
即便你重啓電腦,從新打開下載軟件,從新開始那99%的下載任務,它依舊仍是99%,不增不減。操作系統
你不由開始疑惑:爲何進度條總要卡在99%?爲何最後1%永遠加載不動? 設計
今天,要爲你們破解這一千古謎題,揭開背後不可告人的真相。3d
1896年,波蘭經濟學家Karol Adamiecki製做了一種名叫時間表的圖,提出了早期的進度條概念,可是當時沒有具體的應用。遊戲
等到1979年,這哥們Mitchell Model在他的博士論文中提出了進度條。
正由於進度條能用最簡單的圖案和數字,表達電腦複雜的計算過程的特性,因而漸漸在各大操做系統流行起來,成爲了電腦的經典標誌之一。
但問題來了,人不是電腦更不是神,再牛X的程序員也沒法預測電腦何時完成工做。
因此程序員開發出來的進度條,根本不能精準地反映出電腦狀況,所謂的50%、80%、90%,僅是大概的數字,預測而已。
能夠說你看到的進度條,和實際的進度是兩個東西。
其實這種 1% 隨時都在發生,但咱們只對最後的 1% 印象深入。
它有時候前面很快,後面很慢。
它也可能一直不快不慢,由於它整條都是假的。
雖然卡在 99% 的等待並不讓人愉快,但也不得不認可,沒有 0% 到 99%,咱們的情緒會更焦躁,由於不知道盡頭在哪裏。
這就是進度條的厲害之處 —— 讓你心甘情願地等待。
產品經理的惡意
================
1985 年,卡內基梅隆大學人機交互研究所教授 Brad Myers 仍是一位研究生,當時他就在論文裏提出了這個觀點。
只要看到進度條,人們就會感受好點,它能讓人放鬆,讓人在等待時間去幹點別的 —— 去花 5 分鐘發個傳真,或者幹些在 1985 年的辦公室會幹的事。
雖然進度條由程序員開發,但真正設計進度條的人,是產品經理,包括功能、樣式、圖案等。
不少產品經理在設計進度條時,會特地要求程序員製做一個「虛假進度條」。
假設如今有2個相同下載速度的進度條,A和B,它們的下載完成時間都是100秒。
A是通過產品經理特殊調教的虛假進度條,它很套路,用了20秒下載到99%,最後1%花了80秒完成。
B是老實進度條,沒被調教,10秒加載到10%,100秒100%,一分不差。
此時由於A前十秒加載到99%,而一樣時間B卻僅有10%,在強烈的對比下,大部分人會認爲A比B更快,A比B更好用。
在優勝劣汰的規則下,用戶確定更多會選擇A這種方式的軟件,而產品經理想要留住用戶,採用這種虛假進度條那是必須的。
如今明白了吧,有時候不是進度條不許,而是產品經理在搞事。
根據我多年的經驗,致使這種狀況發生的緣由主要仍是由於資源塊校驗的機制。
迅雷下載採用P2P協議加速,P2P的優勢在於有多個數據來源。
每一個下載過該文件的人,至關於一臺服務器,當別人下載時自動在後臺上傳數據,提供速度。
說白了就是下的人越多,你所下載的資源能被拼湊時間越短。
但缺點一樣也有,由於數據來源多,質量良莠不齊外加上傳不穩定,容易致使文件亂碼出錯。
所以迅雷定下了一個規則:在下載到99.9%的時候,會對文件進行塊檢驗,若是某個塊出現問題,沒法從新下載,則會一直卡在當前進度不動。
下面這個圖很好的說明了問題
兄弟你的形狀怎麼跟咱們不同啊?
若是哪天卡在99.9%不動,別傻楞去充白金會員,大聲告訴你:鈦金會員都沒用!