WebPageTestには、
この
結果を
比較する 動機
記事を
サイトの
速度改善の 際は、 施策の 影響が わかりやすい 遅い 回線で 測りたい。 遅い回線の
結果のみだと、 実際の ユーザーが 体験している 環境、 実際に 個人で 使用している 回線速度とは 乖離が ある。 サーバーリソース等の
関係上、 遅い 回線、 速い 回線での 比較を 全ての 画面に 対して 行うのが 難しい 場合が ある。 一部の
画面を サンプリングして、 速度差を 算出して おき、 「普通の 回線だと、 どれくらい 改善しているの?」 と いう 質問に 回答できるようにする。
WebPageTest で 選択できる 回線速度に ついて
RESTful APIs - WebPagetest Documentationには
- DSL - 1.5 Mbps down, 384 Kbps up, 50 ms first-hop RTT, 0% packet loss
- Cable - 5 Mbps down, 1 Mbps up, 28ms first-hop RTT, 0% packet loss
- FIOS - 20 Mbps down, 5 Mbps up, 4 ms first-hop RTT, 0% packet loss (not all locations will get the full bandwidth)
- Dial - 49 Kbps down, 30 Kbps up, 120 ms first-hop RTT, 0% packet loss
- 3G - 1.6 Mbps down, 768 Kbps up, 300 ms first-hop RTT, 0% packet loss
- 3GFast - 1.6 Mbps down, 768 Kbps up, 150 ms first-hop RTT, 0% packet loss
- Native - No synthetic traffic shaping applied
- custom - Custom profile, bandwidth and latency must also be specified using the bwIn, bwOut, latency and plr parameters
Mbps とは
ビット毎秒
3GFast は、
現在接続中の 回線速度を 測る
以下の
インターネット回線の
速度テスト | Fast.com
netflix 提供の速度テストサイトです。 Speedtest by Ookla - The Global Broadband Speed Test
netflix のサイトから リンクが 貼られています。 speed メーターな 見た目でかっこいいです。
自分の 環境の 回線速度を 測った 結果
下り
13.73 Mbs上り
30.14 Mbs
FIOS よりも、
比較方法
比較方法は
2018/03/01日 から、
2018/03/13日 まで、 3画面の 3GFast回線での 速度、 FIOS回線での 速度を 計測。 1.
の計測結果を TSV化、 Pandas で 読み込み、 基本統計量 を 算出。 平均値を 元に 比較。
APIの 指定パラメータに ついて
測定には
FIOS回線での
指定パラメータ var g_WPT_REQUEST_PARAM = { k: g_WPT_API_KEY, video: 1, f: 'json', mobile: 0, runs: 1, fvonly: 1, // FIOS > 20 Mbps down, 5 Mbps up, 4 ms first-hop RTT, 0% packet loss (not all locations will get the full bandwidth) location: 'ec2-ap-northeast-1.FIOS', mobileDevice: '' };
3GFast 回線での
指定パラメータ var g_WPT_REQUEST_PARAM = { k: g_WPT_API_KEY, video: 1, f: 'json', mobile: 0, runs: 1, fvonly: 1, location: 'ec2-ap-northeast-1.3GFast', mobileDevice: '' };
比較する
インプットと
WebPagetest の
python3.6 -m pip install pandas import pandas as pd # 基本統計量を算出して返す def calc_describe(url): dataframe = pd.read_table(url) # 欠損値を含む行を削除 dataframe = dataframe.dropna(how='any') # 日付カラムを削除 del dataframe['date'] # 基本統計量算出 return dataframe.describe()
aboutページの 結果比較
# aboutページの3GFast回線の結果の読み込み、基本統計量算出 about_3gfast = calc_describe("https://gist.githubusercontent.com/kemsakurai/3a211ddd211948452de1613f82543eed/raw/9c936600c2534a25a32baa64f9f9cc526a691e2f/about_3GFast.tsv") # aboutページのFIOS回線の結果の読み込み、基本統計量算出 about_fios = calc_describe("https://gist.githubusercontent.com/kemsakurai/3a211ddd211948452de1613f82543eed/raw/9c936600c2534a25a32baa64f9f9cc526a691e2f/about_FIOS.tsv") # 3gfast の統計量を fios の統計量で割る about_3gfast / about_fios
SpeedIndex | TTFB | domInteractive | firstPaint | domContentLoadedEventStart | |
---|---|---|---|---|---|
count | 2.000000 | 2.000000 | 2.000000 | 2.000000 | 2.000000 |
mean | 3.936292 | 4.096074 | 3.391063 | 2.602626 | 3.390611 |
std | 2.145486 | 0.988315 | 1.030183 | 1.133197 | 1.030104 |
min | 3.224658 | 10.866667 | 8.047619 | 4.337143 | 8.047619 |
25% | 4.528433 | 11.205479 | 4.931818 | 3.594000 | 4.931818 |
50% | 4.260512 | 5.550595 | 4.309013 | 3.195046 | 4.313305 |
75% | 3.787075 | 2.906994 | 2.983289 | 2.124768 | 2.975333 |
max | 1.750501 | 1.565939 | 1.494501 | 1.789960 | 1.494501 |
Blog記事ページの 結果比較
# blog記事ページの3GFast回線の結果の読み込み、基本統計量算出 blog_content_3gfast = calc_describe("https://gist.github.com/kemsakurai/3a211ddd211948452de1613f82543eed/raw/9c936600c2534a25a32baa64f9f9cc526a691e2f/blogContent_3GFast.tsv") # blog記事のFIOS回線の結果の読み込み、基本統計量算出 blog_content_fios = calc_describe("https://gist.github.com/kemsakurai/3a211ddd211948452de1613f82543eed/raw/9c936600c2534a25a32baa64f9f9cc526a691e2f/blogContent_FIOS.tsv") # 3gfast の統計量を fios の統計量で割る blog_content_3gfast / blog_content_fios
SpeedIndex | TTFB | domInteractive | firstPaint | domContentLoadedEventStart | |
---|---|---|---|---|---|
count | 1.959732 | 1.959732 | 1.959732 | 1.959732 | 1.959732 |
mean | 2.055841 | 2.405646 | 2.460823 | 1.299255 | 2.460426 |
std | 0.985670 | 0.539615 | 0.543047 | 0.847286 | 0.543025 |
min | 1.943709 | 10.403226 | 8.755556 | 2.321782 | 8.755556 |
25% | 2.407710 | 10.271605 | 6.673986 | 1.643052 | 6.673986 |
50% | 2.161184 | 2.832344 | 3.021739 | 1.400000 | 3.021739 |
75% | 2.252902 | 2.206633 | 2.356736 | 1.332877 | 2.356736 |
max | 1.771239 | 1.069644 | 1.111176 | 1.753156 | 1.111176 |
# topページの3GFast回線の結果の読み込み、基本統計量算出 top_3gfast = calc_describe("https://gist.github.com/kemsakurai/3a211ddd211948452de1613f82543eed/raw/9c936600c2534a25a32baa64f9f9cc526a691e2f/top_3GFast.tsv") # topページのFIOS回線の結果の読み込み、基本統計量算出 top_fios = calc_describe("https://gist.github.com/kemsakurai/3a211ddd211948452de1613f82543eed/raw/9c936600c2534a25a32baa64f9f9cc526a691e2f/top_FIOS.tsv") # 3gfast の統計量を fios の統計量で割る top_3gfast / top_fios
SpeedIndex | TTFB | domInteractive | firstPaint | domContentLoadedEventStart | |
---|---|---|---|---|---|
count | 1.951389 | 1.951389 | 1.951389 | 1.951389 | 1.951389 |
mean | 1.814808 | 2.270119 | 1.855093 | 1.510263 | 1.855023 |
std | 1.047281 | 0.676279 | 0.602291 | 1.032938 | 0.602208 |
min | 2.021703 | 9.054795 | 8.312500 | 3.441748 | 8.322917 |
25% | 1.907104 | 2.791541 | 2.695597 | 1.656394 | 2.695597 |
50% | 1.970000 | 2.656635 | 2.139887 | 1.635065 | 2.139887 |
75% | 1.943917 | 2.255826 | 1.800218 | 1.546398 | 1.798258 |
max | 1.460391 | 1.085439 | 1.268943 | 1.484353 | 1.268943 |
結果から わかる こと、 感想
結果から
- 当たり前だが、
回線速度が 速い方が、 ページ速度は 速い。 - ページ間の
ばらつきは 大きい。 個人的にはばらつかないと 思っていた。 推測よりも 計測。 - Aboutページが、
3GFast回線下で 遅い、 回線の 影響を 受けやすい ページに なっている。 SpeedIndex が、 Topページよりも 遅いので、 広告が 原因の 気が する。 PCで 計測しているので、 回線の 割りに 大きな 画像の 広告が 配信されている ? - firstPaint は、
回線の 影響を 受けにくい。 コンテンツの 1バイト目が 届いてしまえばそこからの 転送は 速いのかもしれない。 - 20Mbps / 1.6Mbps = 12.5倍 ほどの
回線に よる 速度差は ない。 (理論上の 20Mbps は 実際の 速度と して 出ていない?)
「普通の
もっとも
理由は、
以上です。
FIOS での
実際の 回線速度を 測る ことは できないので、 あくまで 理論上の 話かと 思います。 ↩
コメント