HTML在這裏並不重要。你關心的是使用的傳輸協議 - 最有可能的是HTTP和TCP。
默認情況下,HTTP不是分塊的,儘管有高級頭文件允許這樣做 - 這些頭文件主要用於支持在大文件(例如PDF,視頻)中搜索。從技術上講,這不是真正的組塊 - 它只是允許部分下載的基礎設施(即「將數據從字節1024提供給字節2048」)。
TCP是基於流的協議。從程序員的角度來看,這就是它 - 沒有塊。但從技術上講,它將處理您的輸入數據並將其作爲不同的數據包發送,而這些數據包將在另一端按順序重新組合。這是一個實用性問題 - 它允許您管理數據延遲,數據流,數據包重新傳輸等。TCP在連接協商期間處理細節 - 流量控制,窗口大小調整,擁塞控制...
這不是它的結尾,但是。所有其他層添加他們自己的位 - 他們自己的方式來打包有效負載並根據需要分割它們,他們自己的方式來處理路由和過濾,他們自己的方式來處理擁塞......
最後,就像本地HTTP支持下載,它也支持上傳數據。只需發送一個HTTP請求(通常是POST或PUT)並以服務器可以理解的格式(從text-base-64到原始二進制數據)寫入數據。你的情況的限制因素不是服務器,瀏覽器或HTTP--它是JavaScript。基本的機制仍然是一樣的 - 一個請求,然後是響應。
現在,爲了解決您的問題:
- 服務器不發送圖像到HTML文件。 HTML只包含圖像的URL [1],當瀏覽器在
img
標籤中看到一個URL時,它將爲圖像數據啓動一個新的單獨請求。它與從鏈接下載文件並沒有根本的不同。至於傳輸本身,它跟原始HTML文檔幾乎完全相同 - HTTP標頭,然後是有效載荷。
- 通常情況下,原始二進制數據。 HTTP是基於文本的協議,但它的有效載荷可以是任意的。使用Base-64傳輸圖像數據幾乎沒有什麼理由(儘管在過去,已經有HTTP和FTP服務器根本不支持二進制,所以你必須使用類似Base-64的東西)。
- HTTP服務器不關心(除了上面提到的「部分下載」)。底層網絡協議處理這個問題。
[1]目前,有方法,直接在HTML文本中嵌入圖像,但它取決於圖像大小,緩存要求等
哇,那是一個非常酷的解釋變化的實用性! – Yaan