Webパフォーマンスについて

Webパフォーマンスについて記事を書いています。パフォーマンス管理は、品質管理です。ですから計測データを元に記事を書いてます。

HTTP/2が速いという幻想

難しい話じゃないです。

皆さん、ご自分でChrome Developer Toolで簡単に確認できますから、やってみて下さい。

このブログでも、過去に統計分析をした結果は掲載したんですが、「盲信」はそうそう簡単には消えないようでして…

takehora.hatenadiary.jp

takehora.hatenadiary.jp

以下の図は、Chrome 63.0.3239.108での結果です。 CDNにFastlyでもAWS CloudFrontでも、どのCDNを使って実験して頂いても結構です。 CDNを使わずに、Webサーバ単体でも結構です。 同様の結果になります。

どちらもHTTPS通信です。 どちらも同じオリジン、同じファイル構成です。 HTTP/1.1は、Keep-Alive設定が入っています。

f:id:takehora:20171227005440j:plain
HTTP/1.1での配信 … Load Event 70ms

f:id:takehora:20171227010056j:plain
HTTP/2での配信 … Load Event 198ms

納得いかないですか?

あまりに多くの情報を手にすると、私たちは本能的に気に入ったものを選び、それ以外は無視する道を選ぶ。そして同じ選択をした人たちを味方とし、それ以外を敵とするのである。 ― 「シグナル&ノイズ」

どうかエンジニアとして、「~がHTTP/2は速くなると言っているから」ではなくて、事実を見てご判断下さい。

同様に、検証すれば分かりますが、Resource Hintsも遅延します。

今年のHTML5 Conferenceで発表しましたが、高速化とは、計算量を如何に削減できるかの勝負なのです。 HTTP/2だって、Resource Hintsだって、計算量を増やす事なんです。

speakerdeck.com

spelldata.co.jp

そして、コンピュータは、そうそう簡単に並列処理はできないのです。 大抵は、並列処理すると、そのオーバーヘッドのコストの方が高くつきます。 このあたりは、大学や大学院で並列処理を研究されている方ならよくご存じの事です。