Gmailãããã£ãSPDYã®è½ã¨ãç©´
1. SPDYãã¼ã å°æ¥
ããããã¾ã§ãããæ°æ¥ SPDY ãç§ã®å¨ãã§é常ã«ãã¼ã ã«ãªã£ã¦ãã¦ãã¾ãã
ååæ¡å
ããSPDYï¼WSåå¼·ä¼ã¯æ¢ã«200å以ä¸ã®ç³ãè¾¼ã¿ããããä»ã§ã¯SPDYãã¿ã§ããã°ãæ¸ãã¨éå¸¸ã«æ³¨ç®ãããããããç¶æ³ã§ããæä»£ã¯ã¾ãã«ã
SPDYã¯ãã¤ããµã¤ã¯ã«ãé 調ã«é§ãä¸ãã£ã¦ãã
ç¶æ³ã ã¨æãã¾ãã

å³ï¼ï¼2012å¹´ã®ãã¤ããµã¤ã¯ã«ï¼
å³ã¯ã¬ã¼ããã¼ç¤¾ã®ãã¬ã¹ãªãªã¼ã¹ http://www.gartner.co.jp/press/html/pr20120906-01.html ããå¼ç¨
SPDYããã¾ã 黿æã«å
¥ã£ãã°ãããªã®ããããã¨ãæ¢ã«ãã¼ã¯æã«å
¥ã£ãã®ããããã¯æ´å²ã証æãã¦ãããã§ãããã
ã¨ãããã¨ã§åå¼·ä¼ã¾ã§SPDYç±ãå·ããªããããç§ãããããªSPDYãã¿ãåºãã¦ããããã¨æãã¾ãã
2. Gmailãããã£ãSPDYã®è½ã¨ãç©´ã¨ã¯
å æ¥ã Google ã§SPDYã®éçºã®ä¸»è¦æ å½è ããã¦ãã William Chan ããã SPDY Prioritization Case Study – Gmail ã¨ãã£ãããã°ãå ¬éããã¾ãããé常ã«åéã®å¤ãã¨ã³ããªã¼ã§ããã大ãã以ä¸ã®2ã¤ã®è©±ãæ¸ããã¦ãã¾ãã
- ãChromeã§Gmailã®CSSã®ãã¦ã³ãã¼ããJSããé ããªã£ã¦ããããªãã ãçç±ãããããªãããã¨Gmailãã¼ã ããç¸è«ããããâ 調ã¹ã¦ã¿ãã¨SPDY ã®åªå 度è¨å®ãåå ã ã£ãã
- SPDYã®åªå 度è¨å®ã¯ãç¾ç¶ã®ä»æ§ã§ã¯ã¾ã ä¸ååãªã®ã§èãç´ããã
ä»åãåè ã®è©±ã«ã¤ãã¦å®éã«æå ã§ã·ãã¥ã¬ã¼ã·ã§ã³ãããçµæã¨ãã®çç±ã解説ãããã¨æãã¾ãã(大å ã®ããã°ãèªãã§å 容ãçè§£ããæ¹ã¯ããããããã®å¾ãèªã¾ããå¿ è¦ã¯ããã¾ãããï¼
3. Gmailã®ãã¼ã¸èªã¿è¾¼ã¿æé©åææ³
ã¾ãGmailãã©ã®ããã«ãã¦ãã¼ã¸èªã¿è¾¼ã¿ã®æé©åãè¡ããã¦ãããããã®è³æã®ãã¤ã³ã¿ã¼ã示ããã¦ãã¾ãã
Browser Enhancements to Help Improve Page Load Performance Using Delta Delivery
ããèªãã§é©ãã¾ãããã
Gmail㯠iframe ã使ã£ã¦ JS ãèªã¿è¾¼ã¿ããã®ä¸ã® Ajaxã§CSSãJSONå½¢å¼ã§ãã¦ã³ãã¼ããã¦ããã
ã¨ã®ãã¨ããã¨ãã¨ã®è³æã¯ãW3Cã«ã¦ DeltaJS ã«ã¤ãã¦ææ¡ãããã®ã§ãããã® DeltaJS ã¨ã¯ãJSã®ã¢ãããã¼ãå·®åãéãæè¡ä»æ§ã§ãã
ã¶ã£ãã¾ãã¾ãããããããããã«æ¸ãã¦ããGmailã®èªã¿è¾¼ã¿æé©åææ³ãDeltaJSã«ã¤ãã¦ã¯ãããä¸ã¤ãäºã¤ããã°ãæ¸ãããã¿ãªã®ã§ãä»å触ããã®ã¯ãã®ãããã«ãã¦ããã¾ããå ã®ããã°ã§ã¯ãGmailã®å ´åAjaxã§éåæã«èªã¿è¾¼ã¾ãã60KBã®å§ç¸®ãããCSSã®ãã¦ã³ãã¼ãã900KBã®å§ç¸®ãããJSããé ãã®ã¯ä½æ ã ãããï¼ ã¨ããã®ãGmailãã¼ã ã®æ©ã¿ã ã£ãããã§ãã
4. Gmailã®ãã¼ã¸èªã¿è¾¼ã¿ãã·ãã¥ã¬ã¼ã·ã§ã³ãã¦ã¿ãã
ã¨ãããã¨ã§ãGmailã®ãã¼ã¸èªã¿è¾¼ã¿ã®ã·ãã¥ã¬ã¼ã·ã§ã³ããã¦ã¿ã¾ãããã
以ä¸ã®3種é¡ã®ãã¡ã¤ã«(index.html/ifram.html/css.json)ãç¨æã㦠Chrome ãã SPDY ã使ã£ã¦ index.html ã«ã¢ã¯ã»ã¹ãã¦ã¿ã¾ããindex.htmlã«å«ã¾ãã iframe.html ã®ãµã¤ãºã¯å·¨å¤§ãªJSã³ã¡ã³ããå«ãã 1.1Mbyteã䏿¹ css.jon ã®æ¹ã¯ãããã40byteã§ããSPDYã®æ
å ±ãåãããããµã¼ã㯠spdylay ã® spdyd ã使ãã¾ããã
<!-- index.html --> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <title>SPDY Priority Test</title> </head> <body> This is a test page. <iframe src="iframe.html"></iframe> </body> </html>
<!-- iframe.html --> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <title>IFrame</title> <script> (function() { var request = new XMLHttpRequest(); request.open("GET", "https://spdy-int.iijplus.jp:8443/css.json"); request.send(); })(); </script> <script> /* aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa */ /* aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa */ /* 以ä¸ã³ã¡ã³ãããã£ã±ã ï¼M byte ç¨ç¶ã */ </script> </head> <body> Iframe </body> </html>
{"css" :"#hoge {color: red;}"}
iframe.html ã®æåã§èªã¿è¾¼ãã SCRIPTæã§ Ajax ãéåæã§ç´ã¡ã«å®è¡ãããã®ã§ã1.1Mbyteã®JSãå«ã iframe.html ã®ãã¦ã³ãã¼ããçµããåã«ããã£ã 40byte ã® css.json ã®ãã¦ã³ãã¼ãã¯å½ç¶å®äºãã¦ããã ããã¨äºæ³ãã¾ãã
CSSã®ãã¦ã³ãã¼ããJSããé
ããªã£ã¦ããï¼
Ajaxå
¨ç¶æå³ãªããããï¼
ã¨ãããã¨ã§ãGmailãã¼ã ãæ©ãã§ããåé¡ã®åç¾ã«æåãã¾ããã
5. SPDYã®åªå 度ã¨ã¯
ããã§W. Chan ã¯ãããã SPDY ã®åé¡ã§ããã¨è¦ã¤ãåºãã®ã§ããããããã§ããå®ã¯ Chrome ã®SPDYåªå
度è¨å®ãåå ã§ããã
SPDYã§ã¯ããªã¯ã¨ã¹ãæ¯ã«0-7ã®8段éã®åªå
度è¨å®ãã§ãã¾ããSPDY ã®åªå
度ãã£ã¼ã«ãã©ãè¨å®ããã¦ããã®ãã¯ã以ä¸ã®ã¹ã©ã¤ãã® p13ã SYN_STREAM ã®ãããã³ã«ãã©ã¼ããã表ãåç
§ãã¦ä¸ããã
| 表ï¼ï¼Chromeã®SPDYåªå 度è¨å® | |||
| åªå 度ã«ãã´ãª | åªå 度 | ãªã¯ã¨ã¹ãã¿ã¤ã | 説æ |
|---|---|---|---|
| HIGHEST | pri=0 | MAIN_FRAME | ã¡ã¤ã³ãã¼ã¸ |
| SUB_FRAME | iframe | ||
| MEDIUM | pri=1 | STYLESHEET | ã¹ã¿ã¤ã«ã·ã¼ã |
| SCRIPT | JavaScriptãã¡ã¤ã« | ||
| FONT_RESOURCE | ãã©ã³ã | ||
| LOW | pri=2 | SUB_RESOURCE | MEDIUM以å¤ã®ãªã½ã¼ã¹ |
| OBJECT | ãªãã¸ã§ã¯ãè¦ç´ | ||
| MEDIA | ã¡ãã£ã¢è¦ç´ | ||
| WORKER | ã¯ã¼ã« | ||
| SHARED_WORKER | å ±æã¯ã¼ã« | ||
| XHR | Ajax | ||
| LOWEST | pri=3 | IMAGE | ç»å |
| FAVICON | favicon | ||
| IDLE | pri=4 | PREFETCH | ããªãã§ãã |
å®éã« spdyd ã®åºåã§ç¢ºèªãã¦ã¿ã¾ãããã
iframe.html
[id=3] [ 19.616] recv SYN_STREAM frame <version=3, flags=1, length=118>
(stream_id=3, assoc_stream_id=0, pri=0)
:host: spdy-int.iijplus.jp:8443
:method: GET
:path: /iframe.html
:scheme: https
:version: HTTP/1.1
(以ä¸ç¥)
[id=3] [ 19.735] recv SYN_STREAM frame <version=3, flags=1, length=128>
(stream_id=5, assoc_stream_id=0, pri=2)
:host: spdy-int.iijplus.jp:8443
:method: GET
:path: /css.json
:scheme: https
:version: HTTP/1.1
(以ä¸ç¥)表1ã®éãiframe.html 㯠SUB_FRMAME ãªã®ã§åªå 度ã¯HIGHEST(pri=0)ã§ãã䏿¹CSSã®æ¹ã¯ Ajax ã«ãã json å½¢å¼ã§åå¾ãã¦ããã®ã§ LOW(pri=2)ãªãã§ããã
6. Gmail ãããã£ãçç±
ãã®åªå
度è¨å®ãå
ã»ã©ã®ã·ãã¥ã¬ã¼ã·ã§ã³çµæã«å½ã¦ã¯ãã¦ã¿ã¾ãã

ããã§åé¡ã®åå ãããããã§ãã
Ajaxã«ããJSONå½¢å¼ã®CSSãã¼ã¿ã®åå¾ã¯ãiframeã§åå¾ããJavaScriptããSPDYã®åªå 度ãä½ãããCSSã®ãã¦ã³ãã¼ãã®å®äºãJSããé ã
ã¨ãããã¨ã§ãããã®ããããããAjaxã§éåæå¦çã«ãã¦ãããããCSSã®ãµã¤ãºã40byteãããªãã¦ããCSSã®ãã¦ã³ãã¼ãã®å®äºãiframeä¸ã®JSã®ãã¦ã³ãã¼ãããé ãã¦ãã¾ãã¨ãããã¨ã常ã«çºçãã¦ããã®ã§ããçµå±ã
JSãiframeã§ãã¦ã³ãã¼ãããcssã Ajaxçµç±ã® json ã§ãã¦ã³ãã¼ãããã¨ãã£ã Gmail ã®ï¼ããæå³ç¹æ®ãªï¼æé©åææ³ãChromeã®SPDYåªå 度è¨å®ã«å½±é¿ããã¦ãã¾ã£ã
ã¨ãããªãã ã£ããã§ãããããã§è©¦ãã«ãiframe.html ã以ä¸ã®ããã«å¤æ´ãã¦ã¿ã¾ãã
<!-- iframe.html --> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <title>IFrame</title> <script src="iframe.js"></script> <link rel="stylesheet" href="css.css" type="text/css"> </head> <body> Iframe </body> </html>
iframe.jsã¯ãï¼Mbyteè¿ãã®JSã³ã¡ã³ãã®ã¿ãcss.css ã¯ãå ç¨ã® css.json ã® CSSã ãå ¥ã£ã¦ãã¾ããããããé常ã®ãã¼ã¸(scriptè¦ç´ ã§ JSã linkè¦ç´ ã§ CSS ããã¦ã³ãã¼ãï¼ã®å ´åã§ãã
ãã®çµæã¯ã

ã§ããï¼SPDYåªå
度å¤ãå ãã¦ãã¾ããï¼
ãããããã¯äºæ³éã JSã¨CSSã並ãã§ãã¦ã³ãã¼ããå®äºãã¦ãã¾ãã æ®éã®ãã¼ã¸ã¯ããããªæãã«ãªããã§ãããã
ããããå°ããªCSSãJSã«å¼ããããã¦ããæã¯ããã¾ãããããã£ãé¨åãæ¹è¯ãããã¨ãä»å¾å¿
è¦ã ã¨ããã®ãããã°ã®å¾åé¨åã§ãã䏿¨æ¥ããGoogle Japan ã§éå¬ããã¦ãã HTTP/2.0 ã® interim meeting ã§ãã®ç¹ã«ã¤ãã¦è°è«ããããããã§ãã®ã§ããã®æ§åã®å ±åãæ¥½ãã¿ã«å¾
ã¡ããã¨æãã¾ãã(spdy/4ã§ã¯ã Stream Dependencies ã¨ãã仿§ãç¾å¨ææ¡ããã¦ãã¾ããï¼
ããã¦ãæ¨æ¥ Google ã§éå¬ããã Chrome Tech Talk Night #5 ã®å¾ãè¬æ¼è ã§ Chrome Developer Advocate ã® Ilya Grigorik ããã¨ç´æ¥SPDYã®è©±ãããæ©ä¼ãããã¾ãããGoogleã®SPDYã®åãçµã¿ç¶æ³ãGmailãã¼ã ã®å¤§å¤ãªè¦å´ãªã©ãèããã¦é常ã«åèã«ãªãã¾ãããï¼Private Comminication ãªã®ã§è©³ç´°ã¯æ¸ãã¾ããããï¼æ¢ã«ï¼å¹´ä»¥ä¸SPDYããµã¼ãã¹æä¾ãã¦ããGoogleã§ããã®ãããªè½ã¨ãç©´ã«ããããã¨ããããã ãªããã¨æå¤ã«æãã¨åæã«ã
ãã¯ãSPDYãæ¬å½ã«ä½¿ãããªãã«ã¯ããã£ããããéç¨ãã¦ãã¦ã®èç©ãæ¬ ãããªããã®ã
ã¨å¼·ãæããæ¬¡ç¬¬ã§ãã
