tft每日頭條

 > 科技

 > 斷點續傳機制

斷點續傳機制

科技 更新时间:2025-01-23 22:36:43

現在的文件上傳下載功能,都是支持斷點續傳的。那麼這看似很簡單的小功能,背後實現的原理是怎樣的呢?

斷點續傳機制(文件斷點續傳功能的原理)1

斷點續傳支持從文件上次中斷的地方開始傳送數據,而并非是從文件開頭傳送。

斷點續傳的原理如下:

由于浏覽器與服務端的通訊是基于HTTP協議,所以斷點續傳功能的原理就是靠HTTP請求來實現。

斷點續傳功能最核心的原理就是利用HTTP請求中的兩個字段:客戶端請求頭中的Range,和服務端響應頭的Content-Range。

我們舉一個例子,模拟一下整個過程。

1、浏覽器請求服務器上的一個文件時,所發出的請求如下(假設文件名為 file.zip,服務器域名為W):

  • GET /file.zip HTTP/1.1 //浏覽器用GET方式獲取file.zip文件,HTTP協議版本1.1
  • Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-
  • excel, application/msword, application/vnd.ms-powerpoint //可接受的響應内容(文件)類型
  • Accept-Language: zh-cn //可接受的響應内容語言(簡體中文)
  • Accept-Encoding: gzip, deflate //可接受的響應内容的編碼方式
  • User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) //浏覽器的身份标識(浏覽器類型)
  • Connection: Keep-Alive //浏覽器想要優先使用的連接類型

2、服務器收到請求後,尋找請求的文件,提取文件的信息,然後返回給浏覽器,返回信息如下:

  • 200 //響應狀态碼(200标識成功)
  • Content-Length=123456789 //響應消息的長度(單位是字節)
  • Accept-Ranges=bytes //服務器所支持的内容範圍(字節)
  • Date=Mon, 30 Apr 2001 12:56:11 GMT //此消息被發送時的日期和時間
  • ETag=W/“02ca57e173c11:95b” //資源的标識符
  • Content-Type=application/octet-stream //當前内容的類型
  • Server=Microsoft-IIS/5.0 //服務器名稱
  • Last-Modified=Mon, 30 Apr 2001 12:56:11 GMT //所請求的對象的最後修改日期

3、此時文件已經開始下載了,如果現在停止了下載,那麼再次下載文件時就要從已經下載的地方繼續下載。現在比如按下了繼續下載,那麼此時浏覽器的請求内容如下:

  • GET /file.zip HTTP/1.1
  • Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-
  • excel, application/msword, application/vnd.ms-powerpoint
  • Range: bytes=200000- //告訴服務器 file.zip 這個文件從200000字節開始傳,前面的字節不用傳了
  • Accept-Language: zh-cn
  • Accept-Encoding: gzip, deflate
  • User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
  • Connection: Keep-Alive

4、此時服務器收到這個請求後,返回的信息如下:

  • 206 //表示服務器已經成功處理了部分GET請求
  • Content-Length=123256789
  • Content-Range=bytes 200000-/123456789 //表示已經返回了200000B的文件數據,同時也返回了文件的全部大小
  • Date=Mon, 30 Apr 2001 12:55:20 GMT
  • ETag=W/“02ca57e173c11:95b”
  • Content-Type=application/octet-stream
  • Server=Microsoft-IIS/5.0
  • Last-Modified=Mon, 30 Apr 2001 12:55:20 GMT

以上就是斷點續傳的原理,在不同客戶端實現時隻需要找到不同的開發語言實現提交Range的方法即可。

作為産品功能的設計者,每一個看似簡單的小功能,其背後的實現原理都值得我們去研究,正所謂“知其然,更要知其所以然”。

#專欄作家#

流年,人人都是産品經理專欄作家。互聯網産品設計師,4年互聯網産品設計經驗。擅長用戶體驗設計,喜歡鑽研需求功能背後的技術實現方式;在成為綜合型産品設計師的道路上不斷努力前進!

本文原創發布于人人都是産品經理。未經許可,禁止轉載

題圖由作者提供

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved