1.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
HTTP/2時代のウェブサイト設計
DeNA Co., Ltd.
Kazuho Oku
1
2.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
ウェブサイトと応答速度度
2
HTTP/2時代のウェブサイト設計
3.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
応答速度度重要
3
HTTP/2時代のウェブサイト設計
出典:
h>p://radar.oreilly.com/2009/06/bing-‐and-‐google-‐agree-‐slow-‐pag.html
4.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
転送データ量量は増⼤大中
4
HTTP/2時代のウェブサイト設計
出典:
h>p://h>parchive.org/trends.php?s=All&minlabel=Aug+1+2011&maxlabel=Aug+1+2015#bytesTotal&reqTotal
5.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
バンド幅も増⼤大中
n エンドユーザのバンド幅は年年率率率50%で増加(ニールセン
の法則)
5
HTTP/2時代のウェブサイト設計
出典:
h>p://www.nngroup.com/arRcles/law-‐of-‐bandwidth/
6.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
未来はバラ⾊色?
6
HTTP/2時代のウェブサイト設計
7.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
ページロード時間はバンド幅に⽐比例例しない
7
HTTP/2時代のウェブサイト設計
出典:
More
Bandwidth
Doesn't
Ma>er
-‐
2011
Mike
Belshe
(Google)
※実効バンド幅は1.6Mbps程度度で頭打ちに
8.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
ページロードはレイテンシが⼩小さいほど速い
8
HTTP/2時代のウェブサイト設計
出典:
More
Bandwidth
Doesn't
Ma>er
-‐
2011
Mike
Belshe
(Google)
9.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
Why?
9
HTTP/2時代のウェブサイト設計
10.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
HTTP/1.1は多重性がない
10
HTTP/2時代のウェブサイト設計
RTT
request
response
request
response
client server
…
RTT
n HTTP/1.1では、1RTTあたり1リクエスト/レスポンスし
か送受信できない
⁃ RTT=ラウンドトリップタイム
• レイテンシの⼤大きさを表す値
n 緩和策:複数のTCP接続を使う
⁃ 同時6本が⼀一般的
• 1RTTあたり6リクエスト!!!
• それでも遅い
11.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
HTTP/1.1パイプラインの問題
11
HTTP/2時代のウェブサイト設計
RTT
requests
responses
client server
n 仕様上、レスポンス受信前に次のリクエストを送信可能
n 問題:
⁃ 切切断時に、レスポンス未受信のリクエストを再送信し
ていいかわからない
• サーバが同じリクエストを複数回処理理する可能性
⁃ 先⾏行行リクエストの処理理に時間がかかると後続が詰まる
(head-‐‑‒of-‐‑‒line blocking)
⁃ バグのあるサーバ実装が多い
12.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
レイテンシは今後も⼩小さくならない
n 光の速度度はかわらない
⁃ アメリカまで光ファイバーで往復復すれば80ミリ秒
n 携帯回線はレイテンシが⼤大きい
⁃ LTE ~∼ 50ms
12
HTTP/2時代のウェブサイト設計
13.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
やばい!ウェブが遅くなってきた!
13
HTTP/2時代のウェブサイト設計
14.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
どうしよう?
14
HTTP/2時代のウェブサイト設計
15.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
解決策:レイテンシに負けないプロトコルを作る
15
HTTP/2時代のウェブサイト設計
16.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
HTTP/2!
16
HTTP/2時代のウェブサイト設計
17.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
HTTP/2
n RFC 7540 (2015/5)
⁃ Google のSPDYプロトコルの実験を参考に規格化
n 技術要素
⁃ バイナリプロトコル
⁃ 多重化
⁃ ヘッダ圧縮
⁃ 優先度度制御
⁃ サーバプッシュ
17
HTTP/2時代のウェブサイト設計
49.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
H2O の reprioritize-‐‑‒blocking-‐‑‒assets オプション
n クライアントが依存関係ツリーを構築しない場合に
n レンダリングをブロックしそうな content-‐‑‒type のレス
ポンスを最優先で配信
49
HTTP/2時代のウェブサイト設計
Root
HTML
weight:
16
CSS
weight:
max
JS
weight:
max
Image
weight:
16
Image
weight:
16
Image
weight:
16
(internal
root)
50.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
H2O の reprioritize-‐‑‒blocking-‐‑‒assets オプション
n first paint が⼤大幅に改善
50
HTTP/2時代のウェブサイト設計
51.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
サーバ側の優先度度制御対応
サーバ 優先度度制御
Apache
HTTP
Server
+
mod_h2 RFC準拠
(ngh>p2を使⽤用)
Apache
Traffic
Server なし
H2O RFC準拠
&
サーバ側でさらに最適化
ngh>p2 RFC準拠
nginx
(alpha) sRll
broken
OpenLiteSpeed
(beta) sRll
broken
51
HTTP/2時代のウェブサイト設計
n 改善が望まれる分野
⁃ サーバがRFCの期待にそった実装をしないと、クライ
アント側でチューニングできない
• 最悪、(サーバ側がバグバグで)使い物にならなかった
HTTP/1.1 パイプライン化の⼆二の舞に
52.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
優先度度制御まとめ
n ユーザの体感速度度を⼤大幅に向上させる技術
⁃ first-‐‑‒paint time が改善するため
n 多くのクライアント、サーバで改善が望まれる
52
HTTP/2時代のウェブサイト設計
53.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
サーバプッシュ
n HTTP/2はRTTを隠蔽する技術
n でも、1RTT(リクエストを投げてからレスポンスを受け
取るまで)は絶対かかるよね?
n それ、0RTTでできるよ!
⁃ サーバが、クライアントの発⾏行行するリクエストを予測
して、レスポンスをプッシュすればいい
※これ以外の⽬目的でも使える技術ですが、今回はウェブブラ
ウザのレスポンスタイムに絞った議論論をします
53
HTTP/2時代のウェブサイト設計
54.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
サーバプッシュ
n 対応サーバ: H2O, nghttpx (nghttp2)
n ウェブアプリケーションの返す Link ヘッダを認識識
GET / HTTP/1.1!
Host: example.com!
!
HTTP/1.1 200 OK!
Content-Type: text/html; charset=utf-8!
Link: </style.css>; rel=preload # このヘッダ!!!!
!
<HTML>…
54
HTTP/2時代のウェブサイト設計
55.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
サーバプッシュ
n RFC どおり実装してあっても、あまり役に⽴立立たない
⁃ プッシュされるレスポンスは、プッシュを
起動したレスポンスに依存する形でスケ
ジュールされるから
n H2O 実装上の⼯工夫
⁃ プッシュするリソースは常に最優先
• reprioritize-‐‑‒blocking-‐‑‒assets と同様
⁃ 1.5 からは、mime-‐‑‒type を⾒見見て優先度度制御
55
HTTP/2時代のウェブサイト設計
HTML
weight:
??
CSS
(pushed)
weight:
16
56.
Copyright
(C)
2015
DeNA
Co.,Ltd.
All
Rights
Reserved.
サーバプッシュの難しさ
n 要件:
⁃ CSS や JavaScript をプッシュしたい
⁃ ブラウザキャッシュにある場合はプッシュしたくない
n どうやればいい?
⁃ ブラウザキャッシュ内の状況を確認するためにリクエ
スト/レスポンスを送信してはいけない
• そのために1RTTかかるとプッシュのメリットがなくなる
56
HTTP/2時代のウェブサイト設計
Be the first to comment