如何讓你的大文件上傳變得又穩又快?


隨着網絡環境的大幅改善及網絡資費的顯著降低,人們在網絡上的互動不再局限於傳統的文本內容,圖片、語音、視頻等紛紛加入了互動行列。

相較於文本內容而言,多媒體在易用性和情感表達上更有優勢,當然相對文本,體積也大了很多。比如一條文本消息只有不到 100 字節,但一條視頻消息可能超過 100 MB。這就導致多媒體在網絡傳輸、實時觸達等方面相對文本內容會更難一些。

在網站或者程序中,除了用戶交流的圖片、視頻等互動消息,還有其他形式的大文件也越來越多。保證大文件的上傳穩定是一個需要長期投入和突破的重點。今天,我們就來看看都有哪些手段可以保證用戶擁有一個良好的上傳體驗。

如何讓資源傳遞又快又穩

或許大家會注意到,使用 QQ 時,朋友發送給你的圖片和視頻會加載一段時間才會顯示,這是因為程序並不是發送文件給你,而是發送了文件路徑,當我們訪問路徑后才會加載文件。這是當前主流的大文件通訊方式,即:

  • 上傳文件到文件服務器

  • 推送文件路徑

  • 收到文件路徑

  • 加載文件

這么做是因為大文件的傳輸耗時過長,會影響消息的即時性,所以不會直接傳送文件。

那么,我們如果要想讓圖片、視頻、語音等多媒體消息發送得又快又穩,就可以從“上傳多媒體文件到文件服務器”這一步上着手。

上傳接入點

第一種優化上傳文件的手段是優化上傳接入點。

上傳請求到文件服務器,服務器響應建聯,上傳端再繼續傳遞數據,直至上傳完成。這個過程的耗時越短就會讓人感覺網速越快。

然而我們國家目前的固網寬帶運營商構成復雜,跨運營商網絡訪問的高延遲和不穩定性一直是個比較棘手的難題。對於傳輸數據更多的視頻、圖片等多媒體文件來說,跨運營商來上傳文件,多次 RTT(Round-Trip-Time,往返時延)的體驗則會更差。

目前針對這種網絡情況的主流做法是,對不同的網絡運營商提供不同的上傳接入點 IP,然后通過運營商 DNS 解析,讓用戶能通過本運營商的上傳接入點來快速上傳文件。同時后端的圖片上傳存儲服務后會部署在多線機房,方便快速地把文件流提交給存儲層,從而避免從接入點到存儲服務的跨網開銷,並解決其他運營商的用戶下載圖片時需要跨網的問題。

不過,雖然多個運營商接入點 IP 能解決跨運營商網絡訪問的問題,但是在管理和使用上會比較復雜。因此大部分服務提供商會利用多線 BGP(Border Gateway Protocol,邊界網關協議)機房托管,這樣就可以只提供 IP ,讓訪問用戶自主選擇最佳路由。

分塊上傳

除去上傳接入點的優化,分塊上傳也可以提升多媒體文件的上傳性能和成功率。

分塊上傳,是指在上傳客戶端,把需要上傳的文件按照一定規則切分為多個數據塊,並按照規則標記序號,然后再分別上傳這些數據塊,服務端接收到后,按照序號重新將多個數據塊組裝成完整的文件。

對於圖片、視頻這種較大的文件來說,分塊上傳可以讓客戶端在分塊完成后,使用並發的方式充分利用網絡帶寬同時上傳多個分塊,有效提升了上傳效率。此外,在一些網絡環境較差、信號不穩定的場景下,采用分塊的方式,在上傳失敗后進行重試時,只需要重傳某一個失敗的分塊,不必重新上傳整個文件,顯著提升了重新發送的成功率。

在分塊上傳中,分塊大小也是一個重要的問題。如果分塊太大,片數少,上傳的並發度不夠,可能會降低上傳效率,而且每個大的分塊在失敗后重傳的成本會比較高。但是如果分塊太小,片數多,並發需要的連接數又太多,多條連接會降低網絡的整體吞吐,客戶上傳端和服務接收端拆分與合並分塊的開銷也相應增加,而且傳輸時的額外流量也會更多。

所以,不同網絡環境下如何選擇一個合適的分塊大小至關重要。一般來說,在網絡狀況較好的環境,比如在 WiFi、4G 下,相應的分塊大小應該設置得更大一些;而在 2G、3G 弱網情況下,分塊可以適當設置小一點。

斷點續傳

因為大文件的上傳耗時較長,如果用戶由於網絡斷開、設備重啟等原因,需要在上傳未完成時暫停上傳任務。當然,用戶肯定不會希望下次上傳是從頭開始。因此如何從暫停位置開始上傳的功能就變得必要起來。這就是我們常說的“斷點續傳”

斷點續傳是通過給每一次上傳行為分配一個唯一的任務標識,每個分塊在上傳時除了攜帶自己的序號外,還需要帶上這個任務標識,服務端針對接收到的同一個任務標識的分塊進行暫存,即使由於某個原因暫停上傳了,這些暫存的分塊也不會馬上清理掉,而是保留一定的時間。

當上傳端需要繼續上傳時,在請求的同時會繼續攜帶之前的任務標識。客戶端接收到后會檢查服務端已有分塊的情況,如果沒有過期就繼續從上次斷開的分塊位置進行上傳,反之則會重新上傳。

斷點續傳功能在上傳大文件時,可解決傳輸較大文件過程中因網絡錯誤而必須重頭再來的痛點,對於提升用戶上傳體驗是很明顯的。

如何快速擁有這些上傳優勢

如果想要完成上述大文件上傳優化,需要考慮到架構、設計、運維等方面,不僅優化成本高,改造時間相對也長。想要擁有上面所說的這些優勢,選擇又拍雲存儲就可以了。

又拍雲存儲可以讓大型文件通過 CDN 就近完成上傳、上傳加速傳輸、分塊上傳和斷點續傳,同時還可以使用圖片處理、視頻處理、文件壓縮解壓縮對文件進行處理。在文件訪問的時候,也會通過 CDN 使用大文件分段緩存、視頻拖拉、鏈路優化等功能進行全網分發。保證企業海量數據的傳輸、處理、存儲、分發與容災需求。

推薦閱讀

CSS 盒子的邊距塌陷

熱門劇本殺與 SaaS 的不解之緣


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM