è¿å¹Žãããã³ããšã³ã ãããžã§ã¯ããæé©åããããã®ãã©ãããã©ãŒã ããŸããŸãå¢ããŠããããµãŒãããŒã㣠ãªãœãŒã¹ãã»ã«ããã¹ãã£ã³ã°ãŸãã¯ãããã·ããæ©äŒãæäŸãããŠããŸãã Akamai ã§ã¯æ¬¡ã®èšå®ãå¯èœã§ã
ãããžã§ã¯ãã§äœ¿çšããããµãŒãããŒã㣠ãµãŒãã¹ãããŸãé »ç¹ã«å€æŽããããããããã¯ã©ã€ã¢ã³ãã«æäŸããããã»ã¹ãæ¹åã§ããããšãããã£ãŠããå Žåã¯ããããããã®ãããªãµãŒãã¹ããããã·ããããšãæ€èšããŠããã§ãããããã®ã¢ãããŒãã䜿çšãããšããããã®ãªãœãŒã¹ããŠãŒã¶ãŒã«è¿ã¥ããããšãã§ããã¯ã©ã€ã¢ã³ãåŽã§ãã£ãã·ã¥ãããå®å
šã«å¶åŸ¡ã§ããããã«ãªããŸããããã«ããµãŒãããŒãã£ã®ãµãŒãã¹ã®ãã¯ã©ãã·ã¥ããããã©ãŒãã³ã¹ã®äœäžã«ãã£ãŠåŒãèµ·ãããããã©ãã«ãããŠãŒã¶ãŒãä¿è·ããããšãã§ããŸãã
è¯ã: ããã©ãŒãã³ã¹ã®åäž
ä»äººã®ãªãœãŒã¹ãèªå·±ãã¹ããããšãéåžžã«æçœãªæ¹æ³ã§ããã©ãŒãã³ã¹ãåäžããŸãããã©ãŠã¶ã¯ DNS ã«å床ã¢ã¯ã»ã¹ããå¿ èŠã¯ãªããTCP æ¥ç¶ã確ç«ããŠãµãŒãããŒã㣠ãã¡ã€ã³äžã§ TLS ãã³ãã·ã§ã€ã¯ãå®è¡ããå¿ èŠããããŸããã次㮠2 ã€ã®å³ãæ¯èŒãããšãä»äººã®ãªãœãŒã¹ãèªå·±ãã¹ãããããšãããã©ãŒãã³ã¹ã«ã©ã®ãããªåœ±é¿ãäžããããããããŸãã
ãµãŒãããŒãã£ã®ãªãœãŒã¹ã¯å€éšãœãŒã¹ããããŠã³ããŒããããŸãïŒããååŸãããŸãïŒ
ãµãŒãããŒãã£ã®ãªãœãŒã¹ã¯ããµã€ãã®æ®ãã®ãããªã¢ã«ãšåãå Žæã«ä¿åãããŸã (以äžããååŸ)
ãã®ç¶æ³ã¯ããã©ãŠã¶ãã¡ã€ã³ ãã¡ã€ã³ãšãã§ã«ç¢ºç«ãããŠãã HTTP/2 æ¥ç¶ããã®ããŒã¿ãå€éåããåªå é äœãä»ããæ©èœã䜿çšããããšã«ãã£ãŠãæ¹åãããŸãã
ãµãŒãããŒãã£ã®ãªãœãŒã¹ããã¹ãããŠããªãå Žåããããã®ãªãœãŒã¹ã¯ã¡ã€ã³ã®ãã¡ã€ã³ãšã¯ç°ãªããã¡ã€ã³ããèªã¿èŸŒãŸãããããåªå
é äœãä»ããããšãã§ããŸãããããã«ãããã¯ã©ã€ã¢ã³ãã®åž¯åå¹
ãããã£ãŠäºãã«ç«¶åããããã«ãªããŸããããã«ãããããŒãžã®æ§ç¯ã«éèŠãªã³ã³ãã³ãã®èªã¿èŸŒã¿æéããçæ³çãªç¶æ³ã§éæã§ããæéããã倧å¹
ã«é·ããªãå¯èœæ§ããããŸãã
å€éšãªãœãŒã¹ãžã®ãªã³ã¯ã§ã®å±æ§ã®äœ¿çšãæ³å®ãããŸãã preconnect
åé¡ã®è§£æ±ºã«åœ¹ç«ã¡ãŸãããã ããããŸããŸãªãã¡ã€ã³ãžã®ãããã®ãªã³ã¯ãå€ããããšãæãéèŠãªç¬éã«å®éã«éä¿¡åç·ã«éè² è·ããããå¯èœæ§ããããŸãã
ãµãŒãããŒãã£ã®ãªãœãŒã¹ãèªåã§ãã¹ãããå Žåã¯ããããã®ãªãœãŒã¹ãã¯ã©ã€ã¢ã³ãã«ã©ã®ããã«æ£ç¢ºã«æäŸããããå¶åŸ¡ã§ããŸããã€ãŸãã次ã®ãããªããšã«ã€ããŠè©±ããŠããŸãã
- åãã©ãŠã¶ã«æé©ãªããŒã¿å§çž®ã¢ã«ãŽãªãºã (Brotli/gzip) ã䜿çšãããŠããããšã確èªã§ããŸãã
- æãããç¥ããããããã€ããŒã§ãã£ãŠããéåžžã¯ç¹ã«é·ããªããªãœãŒã¹ã®ãã£ãã·ã¥æéãå¢ããããšãã§ããŸã (ããšãã°ãGA ã¿ã°ã®å¯Ÿå¿ããå€ã¯ 30 åã«èšå®ãããŠããŸã)ã
é¢é£ããã³ã³ãã³ãããã£ãã·ã¥ç®¡çæŠç¥ (URL ããã·ã¥ãããŒãžã§ã³ç®¡çãªã©) ã«çµã¿èŸŒãããšã§ããªãœãŒã¹ã® TTL ãããšãã° 1 幎ã«å»¶é·ããããšãã§ããŸããããã«ã€ããŠã¯ä»¥äžã§èª¬æããŸãã
âãµãŒãããŒãã£ãµãŒãã¹ã®éçšã®äžæãŸãã¯ã·ã£ããããŠã³ã«å¯Ÿããä¿è·
ã»ã«ããã¹ãã£ã³ã° ãµãŒãããŒã㣠ãªãœãŒã¹ã®ãã 1 ã€ã®èå³æ·±ãåŽé¢ã¯ããµãŒãããŒã㣠ãµãŒãã¹ã®åæ¢ã«äŒŽããªã¹ã¯ã軜æžã§ããããšã§ãã䜿çšããŠãããµãŒãããŒãã£ã® A/B ãã¹ã ãœãªã¥ãŒã·ã§ã³ããããŒãžã®ããã ã»ã¯ã·ã§ã³ã«èªã¿èŸŒãŸããããã㯠ã¹ã¯ãªãããšããŠå®è£ ãããŠãããšä»®å®ããŸãããã®ã¹ã¯ãªããã®èªã¿èŸŒã¿ã¯é ãã§ãã察å¿ããã¹ã¯ãªããã®ããŒãã«å€±æãããšãããŒãžã¯ç©ºã«ãªããŸããèªã¿èŸŒã¿ã«éåžžã«é·ãæéããããå ŽåãããŒãžã®è¡šç€ºã«ããªãã®é ããçããŸãããŸãã¯ããããžã§ã¯ãããµãŒãããŒã㣠CDN ãªãœãŒã¹ããããŠã³ããŒããããã©ã€ãã©ãªã䜿çšããŠãããšããŸãããã®ãªãœãŒã¹ã«é害ãçºçããããç¹å®ã®åœã§ãããã¯ããããšæ³åããŠã¿ãŸãããããã®ãããªç¶æ³ã¯ããµã€ãã®ããžãã¯ã®éåã«ã€ãªãããŸãã
äžéšã®å€éšãµãŒãã¹ãå©çšã§ããªããšãã«ãµã€ããã©ã®ããã«åäœãããã確èªããã«ã¯ã次㮠SPOF ã»ã¯ã·ã§ã³ã䜿çšã§ããŸãã
webpagetest.org ã® SPOF ã»ã¯ã·ã§ã³
âãã©ãŠã¶ã§ã®ãããªã¢ã«ã®ãã£ãã·ã¥ã«é¢ããåé¡ã«ã€ããŠã¯ã©ãã§ãã? ïŒãã³ãïŒããã¯ç¥è©±ã§ãïŒ
ãããã®ãµãŒãã¹ã¯ããªãé«å質ã®ãããã¯ãŒã¯ãåããŠãããäžçäžã«åæ£ãããŠããããããããªã㯠CDN ã䜿çšãããšãèªåçã«ãªãœãŒã¹ã®ããã©ãŒãã³ã¹ãåäžãããšèãããããããŸãããããããå®éã«ã¯ãã¹ãŠãããå°ãè€éã§ãã
ããã€ãã®ç°ãªããµã€ã (website1.comãwebsite2.comãwebsite3.com) ããããšããŸãããããã®ãµã€ãã¯ãã¹ãŠ jQuery ã©ã€ãã©ãªã䜿çšããŠããŸãã CDN (äŸ: googleapis.com) ã䜿çšããŠãããã«æ¥ç¶ããŸãããã©ãŠã¶ãŒãã©ã€ãã©ãªãäžåºŠããŠã³ããŒãããŠãã£ãã·ã¥ãããã®åŸ XNUMX ã€ã®ãµã€ããã¹ãŠã§ããã䜿çšããããšãæåŸ
ã§ããŸããããã«ããããããã¯ãŒã¯ã®è² è·ã軜æžãããå¯èœæ§ããããŸããããããããã«ãããã©ããã§ã³ã¹ããç¯çŽãããªãœãŒã¹ã®ããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸããå®éã®èŠ³ç¹ããèŠããšããã¹ãŠãç°ãªã£ãŠèŠããŸããããšãã°ãSafari ã«ã¯æ¬¡ã®ãããªæ©èœããããŸãã
å€ãç 究
ãã®çµæãä»ã®äººã®ã³ã³ãã³ãããã¹ãããå Žåããã©ãŠã¶ãŒã®ãã£ãã·ã¥ã«ãã£ãŠåŒãèµ·ããããããã©ãŒãã³ã¹ã®åé¡ã«æ°ã¥ãããšã¯ãããŸããã
ãµãŒãããŒãã£ã®ã»ã«ããã¹ãã£ã³ã°ã®é·æã«ã€ããŠèª¬æããã®ã§ã次ã¯ããã®ã¢ãããŒãã®è¯ãå®è£ ãšæªãå®è£ ãåºå¥ããæ¹æ³ã«ã€ããŠè©±ããŸãããã
æªãç¹: æªéã¯çŽ°éšã«å®¿ã
ãµãŒãããŒãã£ã®ãªãœãŒã¹ãç¬èªã®ãã¡ã€ã³ã«ç§»åããã«ã¯ããã®ãããªãªãœãŒã¹ãé©åã«ãã£ãã·ã¥ãããŠããããšã確èªããå¿ èŠããããŸãã
ããã§ã®äž»ãªåé¡ã® 1 ã€ã¯ããã£ãã·ã¥æéã§ããããšãã°ãããŒãžã§ã³æ
å ±ã¯æ¬¡ã®ããã«ãµãŒãããŒãã£ã®ã¹ã¯ãªããåã«å«ãŸããŸãã jquery-3.4.1.js
ããã®ãããªãã¡ã€ã«ã¯ä»åŸãå€æŽãããªãããããã£ãã·ã¥ã«åé¡ãçºçããããšã¯ãããŸããã
ãã ãããã¡ã€ã«ãæäœãããšãã«äœããã®ããŒãžã§ã³ç®¡çã¹ããŒã ã䜿çšãããŠããªãå Žåããã£ãã·ã¥ãããã¹ã¯ãªããã¯ããã¡ã€ã«åã¯å€æŽãããªããŸãŸå 容ãå€æŽããããããå€ããªã£ãŠããŸãå¯èœæ§ããããŸããããã¯ãããšãã°ãã¯ã©ã€ã¢ã³ããã§ããã ãæ©ãåãåãå¿ èŠãããã¹ã¯ãªããã«èªåã»ãã¥ãªã㣠ããããè¿œå ã§ããªããããæ·±å»ãªåé¡ã«ãªãå¯èœæ§ããããŸããéçºè ã¯ããã£ãã·ã¥å ã®ãã®ãããªã¹ã¯ãªãããæŽæ°ããåªåãããå¿ èŠããããŸããããã«ãã¯ã©ã€ã¢ã³ãã§ãã£ãã·ã¥ãã䜿çšãããã³ãŒããããããžã§ã¯ãã®ãµãŒããŒéšåãèšèšãããŠããææ°ããŒãžã§ã³ã®ã³ãŒããšç°ãªããããã¢ããªã±ãŒã·ã§ã³ã®ãšã©ãŒãçºçããå¯èœæ§ããããŸãã
確ãã«ãé »ç¹ã«æŽæ°ããããããªã¢ã« (ã¿ã° ãããŒãžã£ãŒãA/B ãã¹ãçšã®ãœãªã¥ãŒã·ã§ã³) ã«ã€ããŠèšãã°ãCDN ããŒã«ã䜿çšããŠãããããã£ãã·ã¥ããããšã¯è§£æ±ºã§ããã¿ã¹ã¯ã§ãããã¯ããã«è€éã§ããã¿ã°ç®¡çãœãªã¥ãŒã·ã§ã³ã§ãã Commanders Act ãªã©ã®ãµãŒãã¹ã¯ãæ°ããããŒãžã§ã³ãå ¬éãããšãã« Webhook ã䜿çšããŸããããã«ãããCDN äžã§ãã£ãã·ã¥ã匷å¶çã«ãã©ãã·ã¥ããããããã·ã¥ã URL ã匷å¶çã«æŽæ°ãããã§ããããã«ãªããŸãã
âã¯ã©ã€ã¢ã³ããžã®è³æã®é©å¿çãªé ä¿¡
ããã«ããã£ãã·ã¥ã«ã€ããŠè©±ããšãã¯ãCDN ã§äœ¿çšããããã£ãã·ã¥èšå®ãäžéšã®ãµãŒãããŒã㣠ãªãœãŒã¹ã«ã¯é©ããŠããªãå¯èœæ§ããããšããäºå®ãèæ
®ããå¿
èŠããããŸããããšãã°ããã®ãããªãªãœãŒã¹ã¯ããŠãŒã¶ãŒ ãšãŒãžã§ã³ã ã¹ãããã£ã³ã° (ã¢ãããã£ã ãµãŒãã³ã°) ãã¯ãããžã䜿çšããŠãç¹å®ã®ãã©ãŠã¶ã«ããã®ãã©ãŠã¶åãã«ç¹å¥ã«æé©åãããããŒãžã§ã³ã®ã³ã³ãã³ããæäŸããå ŽåããããŸãããããã®ãã¯ãããžãŒã¯ãæ£èŠè¡šçŸãã€ãŸã HTTP ããããŒæ
å ±ã®ããŒã¿ããŒã¹ã«äŸåããŠããã©ãŠã¶ãŒã®æ©èœãææ¡ããŸãã User-Agent
ãã©ã®ãã©ãŠã¶ãæ±ã£ãŠããããããã£ããããã®ãã©ãŠã¶çšã«èšèšããããããªã¢ã«ãæäŸããŸãã
ãã㧠2 ã€ã®ãµãŒãã¹ãèŠããŠãããŠãã ããã XNUMX ã€ç®ã¯ googlefonts.com ã§ãã XNUMX ã€ç®ã¯ãpolyfill.io ã§ãã Google Fonts ãµãŒãã¹ã¯ããã©ãŠã¶ã®æ©èœã«å¿ããŠãç¹å®ã®ãªãœãŒã¹ã«å¯ŸããŠããŸããŸãª CSS ã³ãŒããæäŸããŸã (woffXNUMX ãªãœãŒã¹ãžã®ãªã³ã¯ã䜿çšããŠæäŸããŸã)ã unicode-range
).
以äžã¯ãããŸããŸãªãã©ãŠã¶ããè¡ãããããã€ãã® Google Fonts ã¯ãšãªã®çµæã§ãã
Chrome ããã® Google Fonts ã¯ãšãªçµæ
IE10ããå®è¡ããGoogle Fontsã¯ãšãªã®çµæ
Polyfill.io ã¯ããã©ãŠã¶ã«å¿ èŠãªããªãã£ã«ã®ã¿ãæäŸããŸããããã¯ããã©ãŒãã³ã¹äžã®çç±ããè¡ãããŸãã
ããšãã°ãããŸããŸãªãã©ãŠã¶ãã次ã®ãªã¯ãšã¹ããå®è¡ããå Žåã«äœãèµ·ããããèŠãŠã¿ãŸãããã
IE10ãããã®ãããªãªã¯ãšã¹ããå®è¡ãããšã34KBã®ããŒã¿ãåä¿¡ãããŸãã Chrome ããå®è¡ãããšãããã«å¯Ÿããçãã¯ç©ºã«ãªããŸãã
æã: ãã©ã€ãã·ãŒã«é¢ããèæ ®äºé
ãã®ç¹ã¯é çªã®æåŸã§ãããæãéèŠãªããšã§ã¯ãããŸãããéèŠãªã®ã¯ããããžã§ã¯ãã®ã¡ã€ã³ ãã¡ã€ã³ãŸãã¯ãã®ãµããã¡ã€ã³ã§ãµãŒãããŒã㣠ãªãœãŒã¹ãèªå·±ãã¹ããããšããŠãŒã¶ãŒã®ãã©ã€ãã·ãŒãå±éºã«ãããããã¡ã€ã³ã® Web ãããžã§ã¯ãã«æªåœ±é¿ãåãŒãå¯èœæ§ããããšããããšã§ãã
CDN ã·ã¹ãã ãæ£ããæ§æãããŠããªãå Žåããã¡ã€ã³ã® Cookie ããµãŒãããŒãã£ã®ãµãŒãã¹ã«éä¿¡ãããŠããŸãå¯èœæ§ããããŸãã CDN ã¬ãã«ã§é©åãªãã£ã«ã¿ãªã³ã°ãæ§æãããŠããªãå Žåãã»ãã·ã§ã³ Cookie ã¯éåžž JavaScript ã§ã¯äœ¿çšã§ããŸãã ( httponly
)ãå€éšãã¹ãã«éä¿¡ãããå ŽåããããŸãã
ããã¯ãŸãã« Eulerian ã Criteo ãªã©ã®ãã©ãã«ãŒã§èµ·ããåŸãããšã§ãããµãŒãããŒãã£ã®ãã©ãã«ãŒã Cookie ã«äžæã®èå¥åãèšå®ããŠããå¯èœæ§ããããŸãããããããµã€ã ãããªã¢ã«ã®äžéšã§ããå ŽåããŠãŒã¶ãŒãå¥ã® Web ãªãœãŒã¹ãæäœããŠãããšãã«ããã®èå¥åãèªç±ã«èªã¿åãããšãã§ããŸãã
æè¿ã§ã¯ãã»ãšãã©ã®ãã©ãŠã¶ã«ãã®çš®ã®ãã©ãã«ãŒåäœã«å¯Ÿããä¿è·æ©èœãçµã¿èŸŒãŸããŠããŸãããã®çµæããã©ãã«ãŒã¯ãã¯ãããžãŒã䜿çšããããã«ãªããŸããã
Web ãµã€ãã® Cookie ããã¹ãŠã®ãµããã¡ã€ã³ (*.website.com ãªã©) ã§å©çšã§ããããã«ããããšã¯ãå§ãã§ããŸããããå€ãã®ãµã€ãã§ãããè¡ãããŠããŸãããã®å Žåããã®ãã㪠Cookie ã¯åœè£ ããããµãŒãããŒã㣠ãã©ãã«ãŒã«èªåçã«éä¿¡ãããŸãããã®çµæãç§ãã¡ã¯ãã©ã€ãã·ãŒã«ã€ããŠè©±ãããšãã§ããªããªããŸããã
ãŸããHTTP ããããŒã§ãåãããšãèµ·ãããŸã
çµæ
ãµãŒãããŒã㣠ãªãœãŒã¹ã®ã»ã«ããã¹ãã£ã³ã°ãããã«å®è£ ããäºå®ãããå Žåã¯ãããã€ãã®ã¢ããã€ã¹ããããŠãã ããã
- æãéèŠãª JS ã©ã€ãã©ãªããã©ã³ããCSS ãã¡ã€ã«ããã¹ãããŸããããã«ããããµãŒãããŒã㣠ãµãŒãã¹ã®é害ã«ãããµã€ãã«äžå¯æ¬ ãªãªãœãŒã¹ãå©çšã§ããªããªãããµã€ãã®é害ãããã©ãŒãã³ã¹ãäœäžãããªã¹ã¯ã軜æžãããŸãã
- ãµãŒãããŒãã£ã®ãªãœãŒã¹ã CDN ã«ãã£ãã·ã¥ããåã«ããã¡ã€ã«ã«ååãä»ãããšãã«äœããã®ããŒãžã§ã³ç®¡çã·ã¹ãã ã䜿çšãããŠããããšããŸãã¯æ°ããããŒãžã§ã³ã®å ¬éæã« CDN ãã£ãã·ã¥ãæåãŸãã¯èªåã§ãªã»ããããããšã§ãããã®ãªãœãŒã¹ã®ã©ã€ããµã€ã¯ã«ã管çã§ããããšã確èªããŠãã ãããã¹ã¯ãªããã
- CDNããããã· ãµãŒããŒããã£ãã·ã¥ã®èšå®ã«ã¯åå泚æããŠãã ãããããã«ããããããžã§ã¯ããŸãã¯ããããŒã« Cookie ãéä¿¡ãããã®ãé²ãããšãã§ããŸãã
Client-Hints
ãµãŒãããŒãã£ã®ãµãŒãã¹ã
芪æãªãèªè ïŒ ãããžã§ã¯ãã®éå¶ã«ãšã£ãŠéåžžã«éèŠãªä»ã®äººã®ãããªã¢ã«ããµãŒããŒäžã§ãã¹ãããŠããŸãã?
åºæïŒ habr.com