題 從訪問網頁下載文件有何不同?


我問,因為在這裡我的下載速度就像1MBps,而網頁需要很長時間才能加載(絕對不是1 MBps)。

我猜訪問網頁基本上是從服務器請求它,然後以某種方式“下載”頁面然後再渲染它。

我錯了嗎? 我下載和網頁速度有這麼大差異的原因是什麼?


4
2017-10-06 20:46


起源


有趣的是看到這麼多的觀點和讚成答案,以及很少有關於問題本身的讚成;-) +1引發了一場有趣的討論! - Ivo Flipse♦


答案:


有些網頁有很多單獨的組件,所有組件都必須單獨下載。您的瀏覽器會為您處理所有這些,但通常會降低性能,因為必須進行許多不同的連接,並且可能有些人必須等待其他人完成。此外,網頁通常具有來自各種不同服務器的數據(廣告可能來自他們自己的服務器),並且任何元素的延遲都可能減慢整體速度。文件是從一個地方簡單下載一個文件。

因此,帶寬(您可以在單位時間內下載的數據量)在文件下載中非常重要。延遲(額外時間)在網絡上更重要。


2
2017-10-06 21:27



如果我們可以一次性“下載”網頁(所有組件 - 包括圖像等)(就像普通的單個文件下載一樣)然後渲染它,那就不會更好。它將節省不必為不同組件提出請求的次數,因此會更快。不是嗎? - Lazer
它 將 但這不是互聯網的運作方式。如果是,則必須內聯所有圖像等。每個圖像都是對服務器的單獨請求。內聯所有圖像意味著如果您想要更改許多不同頁面中使用的一個圖像,則必須更改所有不同的頁面。 - Drew
@Drew是的,對,我現在明白了。 - Lazer


這可能是由以下任何/所有原因引起的:

  • 服務器很慢。
  • 服務器連接速度很慢。
  • 你的電腦很慢。渲染也需要時間。
  • 雖然連接允許1Mbps的流量,但它具有高延遲。將此與船舶進行比較。你可以在船上裝載很多東西,但要到達它的目的地需要很長時間。

5
2017-10-06 20:49



你的比較令人困惑。 1Mb / s表示每個設定時間內的數據量。從本質上講,它是一艘能夠容納1Mb貨物並在1秒內前往目的地的船。為什麼會慢? - Giffyguy
假設我在一秒鐘內將1Mb數據放在互聯網上。在我完成之後,數據尚未到達目的地。它首先必須通過很多電纜,路由器和其他東西。就像一艘船需要犁過很多海洋一樣。將電纜與運輸路線進行比較。我可以每秒鐘裝一艘船,裝載1Mb。這並不意味著當我發送第二艘船時,第一艘已經到達目的地。這是您執行ping命令時獲得的延遲。 - Bart van Heukelom
[@Bart van Heukelom]我想我理解你的比較(它解釋了延遲),但它仍然沒有解釋我得到的速度差異。可以? - Lazer
確實如此。如果延遲很高,則非常小的網頁可能仍需要很長時間才能加載。發送幾乎空的船隻需要一個滿載的船(如果我們忽略裝載的船需要更多的發動機功率:p) - Bart van Heukelom
那麼您接收的實際速度是否存在差異,或者您是僅僅根據ISP提供的速度來實現的? - Josh Hunt


了解如何下載網頁以了解為什麼下載1MB文件可能比構成網站的256kb更快的速度非常重要。

  1. 如果HTML / JavaScript /等的Web服務器中存在GZIP壓縮。 (很可能),您的瀏覽器將下載壓縮內容,然後必須解壓縮。
  2. 圖像可能只有30-40k,但在內存中解碼它們可能達到數兆字節
  3. 如果網站有多個外部文件(CSS / JavaScript /圖像),那麼這些文件中的每一個都可以作為構成頁面的瀏覽器的一部分在單獨的連接上下載
  4. 下載文件是HTTP / FTP中的基本操作,簡化了操作。沒有內容可以辨別和渲染

3
2017-10-06 21:14



我從來不知道要做減壓和解碼...... - Lazer


尚未提及 - 這些天的典型網頁下載比您在瀏覽器中看到的文本更多。如果您正在訪問的頁面具有編輯功能,則可能包含大量代碼來處理該頁面。 TinyMCE的 是一個流行的JavaScript“富文本”編輯器的網絡。它很小但不是  小。

TinyMCE

這只是一個例子,但這種事情會使各種網頁膨脹,並使您的瀏覽體驗不再符合您的預期。根據創作網頁或Web應用程序的人員,您最終可能會下載這樣的應用程序 你是否使用它。它只是加載到內存中,等待。

另一方面是心理上的。當您選擇要下載的文件時,您希望等待它到達。當你點擊一個頁面的鏈接時,你更傾向於期待即時的滿足感,所以我並不是說“這一切都在你腦子裡”,那里肯定有一種期待。


2
2017-10-07 03:54



@DaveParillo這也是我知道的事情。我有一個想法,你確認了。 - Lazer


要進行下載,將在文件傳輸開始時協商連接,並使您的速度恢復正常。文件傳輸的這一部分很慢(正如您有時可能會在Web瀏覽器狀態欄中看到的那樣..向[site]發送請求...等待來自[site]的回复並且需要一段時間)。每次請求網頁時,都會進行相同的協商。也可能是服務器因加載而響應請求的速度很慢,或者您的瀏覽器在呈現數據時速度很慢。


1
2017-10-06 20:49



這是有道理的。 - Lazer


您沒有指定您使用的是哪種瀏覽器以及您擁有的是哪種互聯網連接。

如果互聯網連接是例如。衛星鏈路,它具有高下載帶寬和非常慢的上傳帶寬和高延遲。類似的事情適用於3G / HSDPA移動連接,雖然延遲低於衛星,但與ADSL或有線調製解調器相比通常仍然是10-30倍。

使用像Internet Explorer這樣的錯誤瀏覽器,在從Web服務器下載文件時只打開2-3個並發連接,這可能會變得更糟。使用移動電話類型連接,進行3路TCP / IP握手的HTTP連接,單個文件在開始下載之前可能需要幾秒鐘,現在將其與瀏覽器中的幾個同時連接相結合,它突然需要數十個秒下載小網頁,其中包含多個圖像和样式表以及鏈接到它的javascripts。

我使用Opera,它允許我將並發連接設置為一些非常高的數字,例如32或更多。這意味著當通過高延遲鏈接打開網站時,瀏覽器需要幾秒鐘與服務器進行握手,然後同時下載32個項目,並且通常可以最大化下載帶寬,如果瀏覽器確實下載單個/一次只有幾個文件。

如果計算機速度很慢或內存不足,瀏覽器可能會在機器呈現頁面時陷入困境,也會出現速度差異。這可以通過使用像Opera這樣的更快/更輕的瀏覽器來避免,或者如果可能的話,將瀏覽器設置為不渲染頁面,直到它下載了所有必需的元素。現在瀏覽器嘗試盡快渲染頁面,這通常會導致它們多次重新渲染頁面,這在舊機器上可能會很慢。


0
2017-10-07 01:20



@Raynet Windows Vista,Firefox 3.5,內存不是問題(3GB),我的連接是大約300人共享的租用線路。 - Lazer