S.SoudersãLoading Scripts Without Blockingã
High Performance Web Sites :: Loading Scripts Without Blocking
Steve Soudersã®ããã°ãHigh Performance Web Sitesãã®ã¨ã³ããªã
UA Profilerã§å
¬éããã¦ãæ
å ±ã¸ã®è£è¶³ã¨ã³ããªï¼ãã¨ãã¦èªãã ï¼ã
UA Profilerã«ããã¨ãå¤é¨jsã¨ä»ã®ãã¼ã¸å
è¦ç´ ï¼css,js,img,etc..ï¼ã®ä¸¦è¡ãã¦ã³ãã¼ãã¯
ã§å®è£
ããã¦ãã
表ã®ã|| Scriptsãï¼Parallel Scriptsï¼æ¬ãYesã«ãªã£ã¦ããã©ã¦ã¶ã
ããããã®ã¨ã³ããªã«ããã¨ããããææ°ãã©ã¦ã¶ã§å®è£
ããã¦ã並è¡ï¼¤ï¼¬ã¯å®å
¨ãããªãã
- iframeè¦ç´
- imgè¦ç´
ãã®2è¦ç´ ã ãã¯ä¸¦è¡ï¼¤ï¼¬ã§ããªãã
ãã©ã¦ã¶ã®ä¸å®å
¨ãªä¸¦è¡ï¼¤ï¼¬ããjavascriptã§ããå®å
¨ãªä¸¦è¡ï¼¤ï¼¬ã«ã§ãããæ¹æ³ã¯6種é¡ããã
ããããã«ã¡ãªããï¼ãã¡ãªããããã
- å®è£ ã§ãããã©ã¦ã¶ã®ç¯å²
- jséã®ä¾åé¢ä¿ã®ä¿å
- etc...
ãã§ãæ¯è¼çãªã¹ã¹ã¡ã¯ã³ã¬ãã»ã»ã»ã»ã¨ãã主æ¨ã®ã¨ã³ããª
以ä¸æãèªãã å 容
ï¼ãªãªã¸ãã«ï¼
- å®è£
æ¹æ³ä¸è¦§
- XHR Eval
- XHRï¼XMLHttpRequestï¼ã§ã¹ã¯ãªããããã¼ããresponseTextãevalãã
- XHR Injection
- XHRã§ã¹ã¯ãªããããã¼ãããªã³ã¶ãã©ã¤ã§scriptè¦ç´ ä½ããtextããããã£ã«responseTextä»£å ¥ãscriptè¦ç´ ããã¼ã¸ã«æ¿å ¥
- Script in Iframe
- scriptãè¨è¿°ããhtmlãã¡ã¤ã«ãç¨æããããiframeãããã¼ã
- Script DOM Element
- ãªã³ã¶ãã©ã¤ã§scriptè¦ç´ ä½ããä½ã£ãscriptè¦ç´ ã®srcå±æ§ã«jsãã¡ã¤ã«ã®ãã¹æå®ãscriptè¦ç´ ããã¼ã¸ã«æ¿å ¥
- Script Defer
- scriptè¦ç´ ã«deferå±æ§ã¤ããã
- IE, Saf4, Chr2, FF3.1ãéå®ã®ãã¯ããã¯
- document.writeï¼Script Tag
- document.writeã使ã£ã¦scriptã¿ã°ããã¼ã¸ã«æ¿å ¥
- ãã®ãã¯ããã¯ã使ã£ã¦ãIEã ã並åDLãå®è£ ã§ããªãã
- XHR Eval
- å®è£ æ¹æ³ã®åã ã«ã¤ãã¦ã¯Cuzillionã§ç¢ºèªã§ãã
- åå®è£ æ¹æ³ã«ããããã¡ãªãããã¡ãªãããã
- ã©ããæè¯ã®å®è£
æ¹æ³ãï¼
- æé©ãªå®è£
æ¹æ³ã¯ãæ¡ä»¶ã»ç°å¢ã«ãããå®è£
æ¹æ³ã®é¸æã¯ããã»ã©é£ãããªãã3ç¹ã ãèæ
®ããããããå¤æãã¦ããã°ãã§ã¤ã¹ã§ãã
- same origin policyãå®ããã©ãã
- åjsãã¡ã¤ã«ã®ä¾åé¢ä¿ã¯ç¶æããããã©ãã
- ãã¸ã¼ã¢ã¤ã³ã³ï¼busy indicatorsï¼ãåºããªããªã£ã¦ããããã©ãã
- æé©ãªå®è£
æ¹æ³ã¯ãæ¡ä»¶ã»ç°å¢ã«ãããå®è£
æ¹æ³ã®é¸æã¯ããã»ã©é£ãããªãã3ç¹ã ãèæ
®ããããããå¤æãã¦ããã°ãã§ã¤ã¹ã§ãã
- çæ³ç解決
- decision treeã¨ãã¦å³ç¤ºããå®è£ ãã¿ã¼ã³ããã³ãã¬ã¼ãåãã¦ãµã¼ãã¼ãµã¤ãã§å®è£
- éçºè ãæ軽ã«æ¡ä»¶ã«å¿ãã¦å®è£ ãã¿ã¼ã³ãé¸æã§ããããã«ããã
- å¤ãã®å ´åãªã¹ã¹ã¡
- Script DOM Element
- çç±ï¼ãsame origin policyã®å¶ç´ç¡ã
- çç±ï¼ãå®è£ ãã«ã³ã¿ã³
- Script DOM Element
- ï¼±ï¼å¤é¨jsã¨ã¤ã³ã©ã¤ã³scriptã®çµã¿åããããããã¤ã³ã©ã¤ã³scriptãå¤é¨jsã«ä¾åãã¦ãããã®å ´åã®æé©åæ¹æ³ã¯ï¼
- Aï¼å¥ã«ã¨ã³ããªï¼"Coupling asynchronous scripts"ï¼æ¸ãããã
ææ³
- UA Profilerã®ãã¼ã¸ã«ãYesã¨æ¸ãã ããããªããä¾å¤ãããã¨è£è¶³ãã¦ã»ãããã¨æã£ãã
- Script in Iframeãã¯ãã¹ãã¡ã¤ã³ãé§ç®ãªã®ãããããããªãã®ã ãã»ã»ã»
- ãã®ææ³ã§ã¯ãããããã¼ ã¬ã¤ã - AJAX Libraries API - Google Codeã¨çµã¿åããããã¨ãã§ããªããã¨ããç解ã§ï¼¯ï¼«ï¼å°ãåå¼·ãã