HTTP/2 Server Push ʹؔ͢ΔҰߟ
View Slide
Moto Ishizawa(@summerwind)
ԾઆHTTP/2 ͷ Server Push ΛͬͯɺAbove the fold ͷϦιʔεΛϓογϡͨ͠ΒϨϯμϦϯά͕͘ͳΔͷͰʁ
ݕূϖʔδ
ςετڥαʔόʔ• CentOS 7.0• H2O (1.1.2-alpha1)• Nginx (1.7.11)ΫϥΠΞϯτ• Chrome Canary (44.0.2364.0)ωοτϫʔΫ• Uplink delay: 100ms• Downlink delay: 100ms
HTTP/2ը૾ͷಡΈࠐΈ͔֬ʹ͘ͳ͍ͬͯΔAbove the fold ͷϦιʔεΛαʔόʔϓογϡ͢ΔHTTP/2(Pushed above the fold)
HTTP/2JS ͕ϨϯμϦϯάΛϒϩοΫ͍ͯ͠ΔAbove the fold ͷϦιʔεΛαʔόʔϓογϡ͢ΔHTTP/2(Pushed above the fold)
HTTP/2DOM ߏஙλΠϛϯά͕վળJavaScript Λαʔόʔϓογϡ͢ΔHTTP/2(Pushed JavaScript)
HTTP/2CSS ͕ϨϯμϦϯάΛϒϩοΫ͍ͯ͠ΔJavaScript Λαʔόʔϓογϡ͢ΔHTTP/2(Pushed JavaScript)
HTTP/2(Pushed CSS & JavaScript)DOM ߏஙλΠϛϯά͕͞ΒʹվળCSS ͱ JavaScript Λαʔόʔϓογϡ͢ΔHTTP/2
HTTP/2(Pushed CSS & JavaScript & Above the fold)͋Εɺվળ͞Ε͍ͯͳ͍…શ෦αʔόʔϓογϡ͢ΔHTTP/2
HTTP/2(Pushed CSS & JavaScript & Above the fold)ͦͦ Chrome ͕ࢦఆ͢Δ Priority ͕ߟྀ͞Ε͍ͯͳ͍…?શ෦αʔόʔϓογϡ͢ΔHTTP/2
HTTP/1.1HTTP/2 vs HTTP/1.1HTTP/2HTTP/1.1 ͷํ͕ DOM ߏஙλΠϛϯά͕͍
nghttpxH2O vs nghttpxH2Oϓογϡ͠ͳͯ͘ DOM ͷߏஙλΠϛϯά͕͍
nghttpxH2O vs nghttpxH2OCSSɺJavaScriptɺը૾ͷॱ൪ʹసૹ͞Ε͍ͯΔ
nghttpxnghttpx Ͱ Above the fold ͷϦιʔεΛαʔόʔϓογϡ͢ΔҰ൪࠷ޙʹαʔόʔϓογϡͷ͕సૹ͞Ε͍ͯΔnghttpx(Pushed Above the fold)
·ͱΊ• Above the fold ͷϦιʔεΛϓογϡͯ͘͠ͳΒͳ͍• ϒϥβ૬खͷ߹ϨϯμϦϯάͷ͜ͱΛߟྀͯ͋͛͠Δඞཁ͕͋Δ• HTTP/2 Ͱαʔόʔͷ࣮࣍ୈͰɺϨϯμϦϯάύϑΥʔϚϯεมΘͬͯ͘Δ• nghttp2 ͷεέδϡʔϥʔϒϥβͱ૬ੑ͕ྑ͍• H2O ͷεέδϡʔϥʔվળͷ༨͕͋Δ͔• ͳΜͰαʔόʔϓογϡ͢Ε͘ͳΔɺͱ͍͏ͷͰͳ͍• ϞόΠϧΞϓϦͱ Web API ͷΈ߹Θͤͷ߹ͬͱΧδϡΞϧʹ͑ͦ͏
Thank you :-)