今天利用簡單的計算公式,算出網站放在美國或是放在台灣的速度差異,意外的發現其實有效頻寬並沒有想像中得高,如果有網站想要放到國外的話不妨參考看看。
把網站放在國外最大的影響就是來回所耗的時間變長,client 送給 server 較耗時, server 回傳給 client 也需要較長的 delay time。在下圖中,我採用 “有效頻寬” 來比較。有效頻寬是將下載的網頁及其元件(圖片、CSS等)的資料量,除上 “完整下載所有元件需要的時間” 。
由上圖可以看出來,即使是同樣用 10Mbps 的頻寬,round-trip time越長,有效頻寬就越低。
上面計算的方式如下:假設單一網頁是 2KBytes,其中包括了 10 個約 100Kbytes 的物件(通常是圖檔),因此要將這全部的網頁載入完畢總共是 1,002Kbytes。但因為依照 browser 的行為模式,網頁必須先載入才會載入其他物件,所以載入網頁的時間先計算,接下來再計算載入十個物件的時間。理想上,假如 browser 可以同時 request 這十個物件,對頻寬的利用程度最高,但實際上,由於 HTTP 1.1 規定單一 browser 對 server 只能同時開兩個 connection,因此速度就和理論值有一段差距。可以先參考下圖:可以看到原本 10mbps 的國外頻寬,因為受到 HTTP 1.1 最大連線數的影響,變成只有原本的 1/10 不到;但相對的對於頻寬比較低的 ADSL 反而衝擊比較小。
除了這兩個 ping time 和 HTTP1.1 的限制之外,還有單一連線最大可用頻寬的問題。放在美國的主機有一些連到台灣時,最大單一連線速率只能到 200-400Kbps 左右,不過在這裡我們不考慮這個問題。
最後是和放在國內的 ADSL 之比較;有三種模式,一種是把網站整個放在 ADSL 上,一種是全部放在美國,還有一種是把網頁放在台灣、檔案放在美國。從圖中可以看出來,在只考慮單一用戶的狀況下,採用 1Mbps 上傳的 ADSL,表現會比放在美國的 10Mbps 還要好;而放在美國的機器在單一用戶的感受上,約只等於 768Kbps 的表現而已。
結論是:如果你考慮要將網站放到國外,在接近的預算下,將 ADSL 升級到 1Mbps 上傳也不失為可行的作法。或是也應該選擇對台灣 ping time 較低、單一連線速率較高的主機商,至於 100Mbps 的網路 port,對於在台灣的用戶應該是沒有幫助的。
Pingback: hsuyo BLOG 2.0
Dear pesty,
應該是 theme 的影響,圖太大時,圖的右邊會被 sidebar 蓋住。:-)