隨著網(wǎng)絡環(huán)境的大幅改善及網(wǎng)絡資費的顯著降低,人們在網(wǎng)絡上的互動不再局限于傳統(tǒng)的文本內容,圖片、語音、視頻等紛紛加入了互動行列。
相較于文本內容而言,多媒體在易用性和情感表達上更有優(yōu)勢,當然相對文本,體積也大了很多。比如一條文本消息只有不到 100 字節(jié),但一條視頻消息可能超過 100 MB。這就導致多媒體在網(wǎng)絡傳輸、實時觸達等方面相對文本內容會更難一些。
在網(wǎng)站或者程序中,除了用戶交流的圖片、視頻等互動消息,還有其他形式的大文件也越來越多。保證大文件的上傳穩(wěn)定是一個需要長期投入和突破的重點。今天,我們就來看看都有哪些手段可以保證用戶擁有一個良好的上傳體驗。
如何讓資源傳遞又快又穩(wěn)
或許大家會注意到,使用 QQ 時,朋友發(fā)送給你的圖片和視頻會加載一段時間才會顯示,這是因為程序并不是發(fā)送文件給你,而是發(fā)送了文件路徑,當我們訪問路徑后才會加載文件。這是當前主流的大文件通訊方式,即:
●?上傳文件到文件服務器
●?推送文件路徑
●?收到文件路徑
●?加載文件
這么做是因為大文件的傳輸耗時過長,會影響消息的即時性,所以不會直接傳送文件。
那么,我們如果要想讓圖片、視頻、語音等多媒體消息發(fā)送得又快又穩(wěn),就可以從“上傳多媒體文件到文件服務器”這一步上著手。
上傳接入點
第一種優(yōu)化上傳文件的手段是優(yōu)化上傳接入點。
上傳請求到文件服務器,服務器響應建聯(lián),上傳端再繼續(xù)傳遞數(shù)據(jù),直至上傳完成。這個過程的耗時越短就會讓人感覺網(wǎng)速越快。
然而我們國家目前的固網(wǎng)寬帶運營商構成復雜,跨運營商網(wǎng)絡訪問的高延遲和不穩(wěn)定性一直是個比較棘手的難題。對于傳輸數(shù)據(jù)更多的視頻、圖片等多媒體文件來說,跨運營商來上傳文件,多次 RTT(Round-Trip-Time,往返時延)的體驗則會更差。
目前針對這種網(wǎng)絡情況的主流做法是,對不同的網(wǎng)絡運營商提供不同的上傳接入點 IP,然后通過運營商 DNS 解析,讓用戶能通過本運營商的上傳接入點來快速上傳文件。同時后端的圖片上傳存儲服務后會部署在多線機房,方便快速地把文件流提交給存儲層,從而避免從接入點到存儲服務的跨網(wǎng)開銷,并解決其他運營商的用戶下載圖片時需要跨網(wǎng)的問題。
不過,雖然多個運營商接入點 IP 能解決跨運營商網(wǎng)絡訪問的問題,但是在管理和使用上會比較復雜。因此大部分服務提供商會利用多線 BGP(Border Gateway Protocol,邊界網(wǎng)關協(xié)議)機房托管,這樣就可以只提供 IP ,讓訪問用戶自主選擇最佳路由。
分塊上傳
除去上傳接入點的優(yōu)化,分塊上傳也可以提升多媒體文件的上傳性能和成功率。
分塊上傳,是指在上傳客戶端,把需要上傳的文件按照一定規(guī)則切分為多個數(shù)據(jù)塊,并按照規(guī)則標記序號,然后再分別上傳這些數(shù)據(jù)塊,服務端接收到后,按照序號重新將多個數(shù)據(jù)塊組裝成完整的文件。
對于圖片、視頻這種較大的文件來說,分塊上傳可以讓客戶端在分塊完成后,使用并發(fā)的方式充分利用網(wǎng)絡帶寬同時上傳多個分塊,有效提升了上傳效率。此外,在一些網(wǎng)絡環(huán)境較差、信號不穩(wěn)定的場景下,采用分塊的方式,在上傳失敗后進行重試時,只需要重傳某一個失敗的分塊,不必重新上傳整個文件,顯著提升了重新發(fā)送的成功率。
在分塊上傳中,分塊大小也是一個重要的問題。如果分塊太大,片數(shù)少,上傳的并發(fā)度不夠,可能會降低上傳效率,而且每個大的分塊在失敗后重傳的成本會比較高。但是如果分塊太小,片數(shù)多,并發(fā)需要的連接數(shù)又太多,多條連接會降低網(wǎng)絡的整體吞吐,客戶上傳端和服務接收端拆分與合并分塊的開銷也相應增加,而且傳輸時的額外流量也會更多。
所以,不同網(wǎng)絡環(huán)境下如何選擇一個合適的分塊大小至關重要。一般來說,在網(wǎng)絡狀況較好的環(huán)境,比如在 WiFi、4G 下,相應的分塊大小應該設置得更大一些;而在 2G、3G 弱網(wǎng)情況下,分塊可以適當設置小一點。
斷點續(xù)傳
因為大文件的上傳耗時較長,如果用戶由于網(wǎng)絡斷開、設備重啟等原因,需要在上傳未完成時暫停上傳任務。當然,用戶肯定不會希望下次上傳是從頭開始。因此如何從暫停位置開始上傳的功能就變得必要起來。這就是我們常說的“斷點續(xù)傳”
斷點續(xù)傳是通過給每一次上傳行為分配一個唯一的任務標識,每個分塊在上傳時除了攜帶自己的序號外,還需要帶上這個任務標識,服務端針對接收到的同一個任務標識的分塊進行暫存,即使由于某個原因暫停上傳了,這些暫存的分塊也不會馬上清理掉,而是保留一定的時間。
當上傳端需要繼續(xù)上傳時,在請求的同時會繼續(xù)攜帶之前的任務標識。客戶端接收到后會檢查服務端已有分塊的情況,如果沒有過期就繼續(xù)從上次斷開的分塊位置進行上傳,反之則會重新上傳。
斷點續(xù)傳功能在上傳大文件時,可解決傳輸較大文件過程中因網(wǎng)絡錯誤而必須重頭再來的痛點,對于提升用戶上傳體驗是很明顯的。
如何快速擁有這些上傳優(yōu)勢
如果想要完成上述大文件上傳優(yōu)化,需要考慮到架構、設計、運維等方面,不僅優(yōu)化成本高,改造時間相對也長。想要擁有上面所說的這些優(yōu)勢,選擇一臺大帶寬海外主機就可以了
USA-IDC為存儲類用戶全面打造定制化彈性解決方案,性能穩(wěn)定速度可靠,支持不同規(guī)模的數(shù)據(jù)上傳分發(fā)、存儲業(yè)務,而且無需備案,并提供g口超大帶寬美國服務器租用,有需要的用戶可以聯(lián)系24小時在線客服了解詳情