CSS eager loading ã®è€éããæ¢æ±ããŸã: ãã®å©ç¹ãæ¬ ç¹ãå®è£ ãã¯ããã¯ãããã³ãŠã§ããµã€ãã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ããã®å æ¬çãªã¬ã€ãã§ããŠã§ããµã€ãã®ããŒãã£ã³ã°ãšã¯ã¹ããªãšã³ã¹ãæé©åããŸãããã
CSS Eager Rule: Eager Loading ã®è©³çް
ãŠã§ãéçºã®åéã§ã¯ããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ã®æé©åãæãéèŠã§ãããŠãŒã¶ãŒã¯é«éãªèªã¿èŸŒã¿æéãšã·ãŒã ã¬ã¹ãªäœéšãæåŸ ããŠããŸããlazy loading ãåæããŒãžããŒããæ¹åããããã«äººæ°ãéããŠããäžæ¹ã§ãeager loading ã¯ãæŠå¿µç㪠"CSS Eager Rule" ãä»ããŠåç §ãããããšããããŸãããéèŠãªãªãœãŒã¹ã®åªå é äœä»ãã«çŠç¹ãåœãŠãè£å®çãªã¢ãããŒããæäŸããŸãããã®èšäºã§ã¯ãCSS ã®ã³ã³ããã¹ãã«ããã eager loading ã®å æ¬çãªèª¿æ»ãæäŸãããã®ååãå©ç¹ãæ¬ ç¹ãããã³å®è·µçãªå®è£ æŠç¥ãæ€èšŒããŸããCSS 仿§ã«ã¯ãçŽæ¥çã§æ£åŒã«å®çŸ©ããã "CSS Eager Rule" ãååšããªãããšãæç¢ºã«ããããšãéèŠã§ãããã®æŠå¿µã¯ãéèŠãª CSS ãæ©æã«ããŒããããããã«ããããã®æŠç¥ãäžå¿ã«å±éãããŠã§ããµã€ãã®èªèãããããã©ãŒãã³ã¹ãšå®éã®ããã©ãŒãã³ã¹ãåäžãããŸãã
Eager Loading ãšã¯äœã§ãã (CSS ã®ã³ã³ããã¹ã)?
Eager loading ã¯ãæ¬è³ªçã«ããã©ãŠã¶ã«ç¹å®ã®ãªãœãŒã¹ãé å»¶ãããã®ã§ã¯ãªããããã«ããŒãããããã¯ããã¯ã§ããCSS ã®ã³ã³ããã¹ãã§ã¯ãããã¯éåžžãããŒãžã®åæã¬ã³ããªã³ã° (ããã¡ãŒã¹ããã¥ãŒãã³ã³ãã³ã) ãæ åœãã CSS ãã§ããã ãæ©ãããŒããããããã«ããããšãæå³ããŸããããã«ãããã¹ã¿ã€ã«ãªãã³ã³ãã³ãã®ãã©ãã·ã¥ (FOUC) ãŸãã¯é衚瀺ããã¹ãã®ãã©ãã·ã¥ (FOIT) ã鲿¢ãããããåªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«ã€ãªãããŸãã
CSS ããããã£èªäœã§ã¯ãããŸããããeager loading ã®ååã¯ã次ã®ãããªããã€ãã®ãã¯ããã¯ãéããŠå®çŸãããŸãã
- ã€ã³ã©ã€ã³ã¯ãªãã£ã«ã« CSS: ãã¡ãŒã¹ããã¥ãŒã³ã³ãã³ããã¬ã³ããªã³ã°ããããã«å¿
èŠãª CSS ããHTML ããã¥ã¡ã³ãã®
<head>
å ã«çŽæ¥åã蟌ã¿ãŸãã - ã¯ãªãã£ã«ã« CSS ã®ããªããŒã:
<link rel="preload">
ã¿ã°ã䜿çšããŠããã©ãŠã¶ã«éèŠãª CSS ãªãœãŒã¹ãåªå 床ã®é«ãç¶æ ã§ãã§ããããããã«æç€ºããŸãã media
屿§ã®æŠç¥çãªäœ¿çš: ãã¹ãŠã®ç»é¢ã察象ãšããmedia
ã¯ãšãª (äŸ:media="all"
) ãã¯ãªãã£ã«ã« CSS ã«æå®ããŠãããã«ããŒããããããã«ããŸãã
CSS ã«ãšã£ãŠ Eager Loading ãéèŠãªçç±ã¯äœã§ãã?
ãŠã§ããµã€ãã®äœæçãªèªã¿èŸŒã¿é床ã¯ããŠãŒã¶ãŒãšã³ã²ãŒãžã¡ã³ããšã³ã³ããŒãžã§ã³çã«å€§ããªåœ±é¿ãäžããŸããã¯ãªãã£ã«ã« CSS ã® Eager loading ã¯ãããã€ãã®éèŠãªããã©ãŒãã³ã¹ã®æžå¿µäºé ã«å¯ŸåŠããŸãã
- äœæçãªããã©ãŒãã³ã¹ã®åäž: ãã¡ãŒã¹ããã¥ãŒã³ã³ãã³ããè¿ éã«ã¬ã³ããªã³ã°ããããšã§ãããŒãžã®ä»ã®éšåããŸã ããŒãäžã®å Žåã§ãããŠãŒã¶ãŒã¯ããã«äœããç®ã«ããå¿çæ§ã®æèŠãçã¿åºããŸãã
- FOUC/FOIT ã®åæž: ã¹ã¿ã€ã«ãªãã³ã³ãã³ããŸãã¯é衚瀺ããã¹ãã®ãã©ãã·ã¥ãæå°éã«æããããæé€ããããšã§ãããŒãžã®èŠèŠçãªå®å®æ§ãåäžããããã¹ã ãŒãºãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸãããŸãã
- ã³ã¢ãŠã§ããã€ã¿ã«(Core Web Vitals)ã®åŒ·å: CSS ã® Eager loading ã¯ãLargest Contentful Paint (LCP) ã First Contentful Paint (FCP) ãªã©ã®äž»èŠãªã³ã¢ãŠã§ããã€ã¿ã«ã¡ããªã¯ã¹ã«ãã©ã¹ã®åœ±é¿ãäžããå¯èœæ§ããããŸããLCP ã¯ããã¥ãŒããŒãã«è¡šç€ºãããæå€§ã®ã³ã³ãã³ãèŠçŽ ãã¬ã³ããªã³ã°ããããŸã§ã«ãããæéãæž¬å®ããFCP ã¯ãæåã®ã³ã³ãã³ãèŠçŽ ãã¬ã³ããªã³ã°ããããŸã§ã«ãããæéãæž¬å®ããŸãããããã®èŠçŽ ãã¹ã¿ã€ã«ãã CSS ã®ããŒããåªå ããããšã§ããããã®ã¹ã³ã¢ãåäžãããããšãã§ããŸãã
ç±³åœã«ãããµãŒããŒã§ãã¹ããããŠãããŠã§ããµã€ãã«æ¥æ¬ã«ãããŠãŒã¶ãŒãã¢ã¯ã»ã¹ããããšãèããŠãã ãããeager loading ããªãå ŽåããŠãŒã¶ãŒã¯ã¹ã¿ã€ã«ãããã³ã³ãã³ãã衚瀺ããããŸã§ã«å€§å¹ ãªé å»¶ãçºçãããã©ã¹ãã¬ãŒã·ã§ã³ããµã€ãã®æœåšçãªæŸæ£ã«ã€ãªããå¯èœæ§ããããŸããeager loading ã¯ããããã¯ãŒã¯é å»¶ã«é¢ä¿ãªããåæã®èŠèŠèŠçŽ ãè¿ éã«ã¬ã³ããªã³ã°ãããããã«ããããšã§ãããã軜æžããã®ã«åœ¹ç«ã¡ãŸãã
CSS ã® Eager Loading ãã¯ããã¯
CSS ã® eager loading ãå®çŸããããã«ãããã€ãã®ãã¯ããã¯ãæ¡çšã§ããŸããæãäžè¬çãªæ¹æ³ã®è©³çŽ°ãªæŠèŠã以äžã«ç€ºããŸãã
1. ã¯ãªãã£ã«ã« CSS ã®ã€ã³ã©ã€ã³å
ã¯ãªãã£ã«ã« CSS ã®ã€ã³ã©ã€ã³åã«ã¯ããã¡ãŒã¹ããã¥ãŒã³ã³ãã³ããã¬ã³ããªã³ã°ããããã«å¿
èŠãª CSS ããHTML ããã¥ã¡ã³ãã® <head>
ã® <style>
ã¿ã°å
ã«çŽæ¥åã蟌ãããšãå«ãŸããŸãã
äŸ:
<head>
<style>
body { font-family: Arial, sans-serif; margin: 0; }
header { background-color: #f0f0f0; padding: 20px; }
h1 { font-size: 2em; margin-bottom: 10px; }
</style>
<link rel="stylesheet" href="style.css" onload="if(media!='all') media='all'"> <noscript><link rel="stylesheet" href="style.css"></noscript>
</head>
å©ç¹:
- ã¬ã³ããªã³ã°ããããã¯ãããªã¯ãšã¹ãã®æé€: ãã©ãŠã¶ã¯ãã¯ãªãã£ã«ã« CSS ããã§ããããããã«è¿œå ã® HTTP ãªã¯ãšã¹ããè¡ãå¿ èŠããªããããæåã®ã¬ã³ããªã³ã°ãŸã§ã®æéãççž®ãããŸãã
- æéã®äœæçãªããã©ãŒãã³ã¹: CSS ã¯ãã§ã« HTML ã«ååšããããããã©ãŠã¶ã¯ããã«ã¹ã¿ã€ã«ãé©çšã§ããŸãã
çæ:
- HTML ãµã€ãºã®å¢å : CSS ãã€ã³ã©ã€ã³åãããšãHTML ããã¥ã¡ã³ãã®ãµã€ãºãå¢å ããåæããŠã³ããŒãæéã«ããããªåœ±é¿ãäžããå¯èœæ§ããããŸãã
- ã¡ã³ããã³ã¹ã®ãªãŒããŒããã: ã€ã³ã©ã€ã³åããã CSS ã®ã¡ã³ããã³ã¹ã¯ãç¹ã«å€§èŠæš¡ãªãŠã§ããµã€ãã§ã¯å°é£ã«ãªãå¯èœæ§ããããŸãã倿Žã«ã¯ãHTML ãçŽæ¥æŽæ°ããå¿ èŠããããŸãã
- ã³ãŒãã®éè€: åã CSS ãè€æ°ã®ããŒãžã§äœ¿çšãããŠããå Žåã¯ãåããŒãžã«ã€ã³ã©ã€ã³åããå¿ èŠããããã³ãŒãã®éè€ã«ã€ãªãããŸãã
ãã¹ããã©ã¯ãã£ã¹:
- ããã»ã¹ãèªååãã: Critical CSS ã Penthouse ãªã©ã®ããŒã«ã䜿çšããŠãã¯ãªãã£ã«ã« CSS ãèªåçã«æœåºããŠã€ã³ã©ã€ã³åããŸãããããã®ããŒã«ã¯ãããŒãžãåæãããã¡ãŒã¹ããã¥ãŒã³ã³ãã³ããã¬ã³ããªã³ã°ããããã«å¿ èŠãª CSS ãèå¥ããŸãã
- ãã£ãã·ã¥ãã¹ãã£ã³ã°: å®å
šãª CSS ãã¡ã€ã«ã«ãã£ãã·ã¥ãã¹ãã£ã³ã°æŠç¥ãå®è£
ããŠã倿Žãæçµçã«äŒæããããã«ããŸããäžèšã®
onload
ã®ããªãã¯ã¯ãããã容æã«ããããšãã§ããŸãã - ãªãŒã³ã«ä¿ã€: æåã®ãã¥ãŒããŒãã®ã¬ã³ããªã³ã°ã«çµ¶å¯Ÿã«å¿ èŠãª CSS ã®ã¿ãã€ã³ã©ã€ã³åããŸããéèŠã§ãªã CSS ã®ããŒããå»¶æããŸãã
2. ã¯ãªãã£ã«ã« CSS ã®ããªããŒã
<link rel="preload">
ã¿ã°ã䜿çšãããšããã©ãŠã¶ã«ç¹å®ã®ãªãœãŒã¹ãããé«ãåªå
床ã§ãã§ããããããã«éç¥ã§ããŸããã¯ãªãã£ã«ã« CSS ãããªããŒãããããšã§ããã©ãŠã¶ã« HTML ã§ããããçºèŠããåã§ããã¬ã³ããªã³ã°ããã»ã¹ã§ CSS ãã¡ã€ã«ãæ©æã«ããŠã³ããŒãããããã«æç€ºã§ããŸãã
äŸ:
<head>
<link rel="preload" href="critical.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="critical.css"></noscript>
</head>
説æ:
rel="preload"
: ãªãœãŒã¹ãããªããŒãããå¿ èŠãããããšãæå®ããŸããhref="critical.css"
: ããªããŒããã CSS ãã¡ã€ã«ã® URLãas="style"
: ãªãœãŒã¹ãã¹ã¿ã€ã«ã·ãŒãã§ããããšã瀺ããŸããonload
ãã³ãã©ãšnoscript
ã¿ã°ã¯ãJavaScript ãç¡å¹ã«ãªã£ãŠããå ŽåãããªããŒãã倱æããå Žåã§ããCSS ãé©çšãããããã«ããŸãã
å©ç¹:
- éããããã³ã°: ããªããŒãã¯ããŒãžã®ã¬ã³ããªã³ã°ããããã¯ããŸããããã©ãŠã¶ã¯ãCSS ãããŠã³ããŒããããŠããéã HTML ã®è§£æãç¶è¡ã§ããŸãã
- ãã£ãã·ã¥ã®æé©å: ãã©ãŠã¶ã¯ããªããŒãããã CSS ããã£ãã·ã¥ã§ãããããåŸç¶ã®ãªã¯ãšã¹ããé«éã«ãªããŸãã
- ã€ã³ã©ã€ã³åãããã¡ã³ããã³ã¹ã容æ: CSS ã¯å¥ã®ãã¡ã€ã«ã«æ®ããããã¡ã³ããã³ã¹ã容æã«ãªããŸãã
çæ:
- ãã©ãŠã¶ã®ãµããŒããå¿
èŠ: ããªããŒãã¯ææ°ã®ãã©ãŠã¶ã§ãµããŒããããŠããŸãããå€ããã©ãŠã¶ã§ã¯
<link rel="preload">
ã¿ã°ãèªèãããªãå ŽåããããŸãããã ããonload
ãã©ãŒã«ããã¯ã¯ãã®ã±ãŒã¹ãã«ããŒããŸãã - æ£ããå®è¡ãããªãå Žåã¯ããŒãæéãå¢å ããå¯èœæ§ããããŸã: ééã£ããªãœãŒã¹ãŸãã¯å€ããããªãœãŒã¹ãããªããŒããããšãå®éã«ã¯ããŒãžã®é床ãäœäžããå¯èœæ§ããããŸãã
ãã¹ããã©ã¯ãã£ã¹:
- ã¯ãªãã£ã«ã« CSS ãåªå ãã: ãã¡ãŒã¹ããã¥ãŒã³ã³ãã³ãã®ã¬ã³ããªã³ã°ã«äžå¯æ¬ 㪠CSS ã®ã¿ãããªããŒãããŸãã
- 培åºçã«ãã¹ããã: ããªããŒããå®è£ ããåŸããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ãç£èŠããŠãå®éã«ããŒãæéãæ¹åãããŠããããšã確èªããŸãã
as
屿§ã䜿çšãã: ããªããŒããããªãœãŒã¹ã®ã¿ã€ãã瀺ãããã«ãå¿ ãas
屿§ãæå®ããŠãã ãããããã«ããããã©ãŠã¶ã¯ãªãœãŒã¹ã®åªå é äœãä»ããæ£ãããã£ãã·ã¥ããã³ããŒãæŠç¥ãé©çšã§ããŸãã
3. media
屿§ã®æŠç¥çãªäœ¿çš
<link>
ã¿ã°ã® media
屿§ã䜿çšãããšãã¹ã¿ã€ã«ã·ãŒããé©çšããã¡ãã£ã¢ãæå®ã§ããŸããmedia
屿§ãæŠç¥çã«äœ¿çšããããšã§ããã©ãŠã¶ãããŸããŸãª CSS ãã¡ã€ã«ãããŒãããŠé©çšããã¿ã€ãã³ã°ãå¶åŸ¡ã§ããŸãã
äŸ:
<head>
<link rel="stylesheet" href="critical.css" media="all">
<link rel="stylesheet" href="print.css" media="print">
<link rel="stylesheet" href="mobile.css" media="(max-width: 768px)">
</head>
説æ:
media="all"
:critical.css
ãã¡ã€ã«ã¯ãã¹ãŠã®ã¡ãã£ã¢ã¿ã€ãã«é©çšãããããã«ããŒããããããã«ãªããŸããmedia="print"
:print.css
ãã¡ã€ã«ã¯ãããŒãžãå°å·ãããšãã«ã®ã¿é©çšãããŸããmedia="(max-width: 768px)"
:mobile.css
ãã¡ã€ã«ã¯ãæå€§å¹ ã 768 ãã¯ã»ã«ã®ç»é¢ã«ã®ã¿é©çšãããŸãã
å©ç¹:
- æ¡ä»¶ä»ãããŒã: ã¡ãã£ã¢ã¿ã€ããŸãã¯ããã€ã¹ã®ç¹æ§ã«åºã¥ããŠãããŸããŸãª CSS ãã¡ã€ã«ãããŒãã§ããŸãã
- ããã©ãŒãã³ã¹ã®åäž: å¿ èŠãª CSS ãã¡ã€ã«ã®ã¿ãããŒãããããšã§ãããŠã³ããŒãããã³è§£æããå¿ èŠãããããŒã¿ã®éãæžããããšãã§ããŸãã
çæ:
- æ éãªèšç»ãå¿ èŠ: CSS ã¢ãŒããã¯ãã£ãæ éã«èšç»ããããŸããŸãªã¡ãã£ã¢ã¿ã€ãã«ãšã£ãŠã©ã® CSS ãã¡ã€ã«ãéèŠã§ãããã倿ããå¿ èŠããããŸãã
- è€éãã«ã€ãªããå¯èœæ§: ããŸããŸãª media 屿§ãæã€è€æ°ã® CSS ãã¡ã€ã«ã®ç®¡çã¯ãç¹ã«å€§èŠæš¡ãªãŠã§ããµã€ãã§ã¯è€éã«ãªãå¯èœæ§ããããŸãã
ãã¹ããã©ã¯ãã£ã¹:
- ã¢ãã€ã«ãã¡ãŒã¹ãã§éå§ãã: ãŸãã¢ãã€ã«ããã€ã¹åãã«ãŠã§ããµã€ããèšèšããã¡ãã£ã¢ã¯ãšãªã䜿çšããŠããã倧ããªç»é¢åãã«ãã¶ã€ã³ã段éçã«åŒ·åããŸãã
- ç¹å®ã®ã¡ãã£ã¢ã¯ãšãªã䜿çšãã: ç¹å®ã®ã¡ãã£ã¢ã¯ãšãªã䜿çšããŠãããŸããŸãªããã€ã¹ãšç»é¢ãµã€ãºãã¿ãŒã²ããã«ããŸãã
- ä»ã®ãã¯ããã¯ãšçµã¿åããã:
media
屿§ã®äœ¿çšããã¯ãªãã£ã«ã« CSS ã®ã€ã³ã©ã€ã³åãããªããŒããªã©ã®ä»ã® eager loading ãã¯ããã¯ãšçµã¿åãããŸãã
åºæ¬ãè¶ ããŠ: é«åºŠãª Eager Loading æŠç¥
äžèšã§èª¬æããåºæ¬çãªãã¯ããã¯ã«å ããŠãããã€ãã®é«åºŠãªæŠç¥ã«ãããCSS ã®ããŒããããã«æé©åãããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
1. HTTP/2 ãµãŒããŒããã·ã¥
HTTP/2 ãµãŒããŒããã·ã¥ã䜿çšãããšããµãŒããŒã¯ã¯ã©ã€ã¢ã³ãããªã¯ãšã¹ãããåã«ããªãœãŒã¹ãã¯ã©ã€ã¢ã³ãã«ããã¢ã¯ãã£ãã«éä¿¡ã§ããŸããã¯ãªãã£ã«ã« CSS ãã¡ã€ã«ãããã·ã¥ããããšã§ããã©ãŠã¶ãããããçºèŠããŠããŠã³ããŒããããŸã§ã«ãããæéãå€§å¹ ã«ççž®ã§ããŸãã
ä»çµã¿:
- ãµãŒããŒã¯ HTML ããã¥ã¡ã³ããåæããã¯ãªãã£ã«ã« CSS ãã¡ã€ã«ãèå¥ããŸãã
- ãµãŒããŒã¯ã¯ã©ã€ã¢ã³ãã« PUSH_PROMISE ãã¬ãŒã ãéä¿¡ããã¯ãªãã£ã«ã« CSS ãã¡ã€ã«ãéä¿¡ããããšã瀺ããŸãã
- ãµãŒããŒã¯ã¯ã©ã€ã¢ã³ãã«ã¯ãªãã£ã«ã« CSS ãã¡ã€ã«ãéä¿¡ããŸãã
å©ç¹:
- ã©ãŠã³ãããªããæéã®æé€: ãã©ãŠã¶ã¯ãHTML ãè§£æããããŸã§ãã¯ãªãã£ã«ã« CSS ãã¡ã€ã«ãçºèŠããããã«åŸ ã€å¿ èŠã¯ãããŸããã
- ããã©ãŒãã³ã¹ã®åäž: ãµãŒããŒããã·ã¥ã¯ãç¹ã«ãããã¯ãŒã¯é å»¶ã倧ãããŠã§ããµã€ãã®å Žåãæåã®ã¬ã³ããªã³ã°ãŸã§ã®æéãå€§å¹ ã«ççž®ã§ããŸãã
çæ:
- HTTP/2 ã®ãµããŒããå¿ èŠ: ãµãŒããŒããã·ã¥ã§ã¯ããµãŒããŒãšã¯ã©ã€ã¢ã³ãã®äž¡æ¹ã HTTP/2 ããµããŒãããå¿ èŠããããŸãã
- 垯åå¹ ã®æµªè²»ã«ãªãå¯èœæ§: ã¯ã©ã€ã¢ã³ãããã§ã«ã¯ãªãã£ã«ã« CSS ãã¡ã€ã«ããã£ãã·ã¥ããŠããå ŽåããµãŒããŒããã·ã¥ã¯åž¯åå¹ ãæµªè²»ããå¯èœæ§ããããŸãã
ãã¹ããã©ã¯ãã£ã¹:
- 泚æããŠäœ¿çšãã: æåã®ãã¥ãŒããŒãã®ã¬ã³ããªã³ã°ã«æ¬åœã«éèŠãªãªãœãŒã¹ã®ã¿ãããã·ã¥ããŸãã
- ãã£ãã·ã¥ãæ€èšãã: ã¯ã©ã€ã¢ã³ãããã§ã«ãã£ãã·ã¥ããŠãããªãœãŒã¹ã®ããã·ã¥ãåé¿ããããã«ããã£ãã·ã¥æŠç¥ãå®è£ ããŸãã
- ããã©ãŒãã³ã¹ãç£èŠãã: ãµãŒããŒããã·ã¥ãå®è£ ããåŸããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ãç£èŠããŠãå®éã«ããŒãæéãæ¹åãããŠããããšã確èªããŸãã
2. ãªãœãŒã¹ãã³ãã«ãã CSS ã®é ä¿¡ã®åªå é äœä»ã
preconnect
ã dns-prefetch
ãªã©ã®ãªãœãŒã¹ãã³ãã¯ãã©ã®ãªãœãŒã¹ãéèŠã§ãã©ã®ããã«å¹ççã«ãã§ãããããã«ã€ããŠããã©ãŠã¶ã«ãã³ããæäŸã§ããŸããå³å¯ã«ã¯ eager loading ãã¯ããã¯ã§ã¯ãããŸããããå
šäœçãªããŒãããã»ã¹ã®æé©åã«è²¢ç®ããã¯ãªãã£ã«ã« CSS ã®é
ä¿¡ãæ¹åã§ããŸãã
äŸ:
<head>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="dns-prefetch" href="https://fonts.googleapis.com">
</head>
説æ:
rel="preconnect"
: æå®ããããã¡ã€ã³ãžã®æ¥ç¶ãããŒãããã»ã¹ã®æ©ã段éã§ç¢ºç«ããããã«ãã©ãŠã¶ã«æç€ºããŸããããã¯ãCSS ãã¡ã€ã«ããã©ã³ããªã©ã®éèŠãªãªãœãŒã¹ããã¹ããããã¡ã€ã³ã«åœ¹ç«ã¡ãŸããrel="dns-prefetch"
: æå®ããããã¡ã€ã³ã® DNS ã«ãã¯ã¢ãããããŒãããã»ã¹ã®æ©ã段éã§å®è¡ããããã«ãã©ãŠã¶ã«æç€ºããŸããããã«ãããåŸã§ãã¡ã€ã³ã«æ¥ç¶ããã®ã«ãããæéãççž®ã§ããŸãã
å©ç¹:
- æ¥ç¶æéã®æ¹å: ãªãœãŒã¹ãã³ãã¯ãéèŠãªãã¡ã€ã³ãžã®æ¥ç¶ã確ç«ããã®ã«ãããæéãççž®ã§ããŸãã
- ããã©ãŒãã³ã¹ã®åŒ·å: æ¥ç¶ããã»ã¹ãæé©åããããšã§ããªãœãŒã¹ãã³ãã¯ãŠã§ããµã€ãã®å šäœçãªããŒãããã©ãŒãã³ã¹ãåäžãããããšãã§ããŸãã
çæ:
- éå®çãªåœ±é¿: ãªãœãŒã¹ãã³ãã¯ãä»ã® eager loading ãã¯ããã¯ãšæ¯èŒããŠãããã©ãŒãã³ã¹ãžã®åœ±é¿ã¯éå®çã§ãã
- æ éãªèšç»ãå¿ èŠ: ã©ã®ãã¡ã€ã³ã«ããªã³ãã¯ããŸãã¯ããªãã§ããããããæ éã«èšç»ããå¿ èŠããããŸãã
3. ã¯ãªãã£ã«ã« CSS ãžã§ãã¬ãŒã¿ãŒã®äœ¿çš
ãŠã§ããµã€ãã®ã¯ãªãã£ã«ã« CSS ãèªåçã«çæã§ããããã€ãã®ããŒã«ãšãµãŒãã¹ããããŸãããããã®ããŒã«ã¯ãããŒãžãåæãããã¡ãŒã¹ããã¥ãŒã³ã³ãã³ããã¬ã³ããªã³ã°ããããã«å¿ èŠãª CSS ãèå¥ããŸããæ¬¡ã«ãã€ã³ã©ã€ã³åãŸãã¯ããªããŒãã§ããã¯ãªãã£ã«ã« CSS ãã¡ã€ã«ãçæããŸãã
ã¯ãªãã£ã«ã« CSS ãžã§ãã¬ãŒã¿ãŒã®äŸ:
- Critical CSS: HTML ããã¯ãªãã£ã«ã« CSS ãæœåºãã Node.js ã¢ãžã¥ãŒã«ã
- Penthouse: ã¯ãªãã£ã«ã« CSS ãçæãã Node.js ã¢ãžã¥ãŒã«ã
- ãªã³ã©ã€ã³ã¯ãªãã£ã«ã« CSS ãžã§ãã¬ãŒã¿ãŒ: ãŠã§ããµã€ãã® URL ãæäŸããããšã§ã¯ãªãã£ã«ã« CSS ãçæã§ãããªã³ã©ã€ã³ãµãŒãã¹ãããã€ããããŸãã
å©ç¹:
- èªåå: ã¯ãªãã£ã«ã« CSS ãžã§ãã¬ãŒã¿ãŒã¯ãã¯ãªãã£ã«ã« CSS ã®èå¥ãšæœåºã®ããã»ã¹ãèªååããŸãã
- åŽåã®è»œæž: ããŒãžãæåã§åæããã©ã® CSS ãéèŠã§ãããã倿ããå¿ èŠã¯ãããŸããã
- 粟床ã®åäž: ã¯ãªãã£ã«ã« CSS ãžã§ãã¬ãŒã¿ãŒã¯ãæååæãããæ£ç¢ºã«ã¯ãªãã£ã«ã« CSS ãèå¥ã§ããããšããããããŸãã
çæ:
- æ§æãå¿ èŠ: ãŠã§ããµã€ãã§æ£ããåäœããããã«ãã¯ãªãã£ã«ã« CSS ãžã§ãã¬ãŒã¿ãŒãæ§æããå¿ èŠãããå ŽåããããŸãã
- ãšã©ãŒã®å¯èœæ§: ã¯ãªãã£ã«ã« CSS ãžã§ãã¬ãŒã¿ãŒã¯å®ç§ã§ã¯ãªããå Žåã«ãã£ãŠã¯æ£ãããªããŸãã¯äžå®å šãªã¯ãªãã£ã«ã« CSS ãçæããå¯èœæ§ããããŸãã
ãã¬ãŒããªã: Eager Loading ãæè¯ã®éžæã§ã¯ãªãå Žå
Eager loading ã¯ãŠã§ããµã€ãã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžãããããšãã§ããŸãããåžžã«æè¯ã®éžæã§ã¯ãããŸãããeager loading ãå®éã«ããã©ãŒãã³ã¹ãäœäžãããããä»ã®åé¡ãåŒãèµ·ããå¯èœæ§ã®ããç¶æ³ããããŸãã
- é床㮠Eager Loading: CSS ãé床㫠Eager Loading ãããšãåæããŠã³ããŒããµã€ãºãå¢å ããããŒãžã®é床ãäœäžããå¯èœæ§ããããŸãããã¡ãŒã¹ããã¥ãŒã³ã³ãã³ãã®ã¬ã³ããªã³ã°ã«çµ¶å¯Ÿã«å¿ èŠãª CSS ã®ã¿ãããŒãããããšãéèŠã§ãã
- è€éãªãŠã§ããµã€ã: å€ãã® CSS ãæã€éåžžã«è€éãªãŠã§ããµã€ãã®å Žåãã¯ãªãã£ã«ã« CSS ãã€ã³ã©ã€ã³åãããšã管çãšã¡ã³ããã³ã¹ãå°é£ã«ãªãå¯èœæ§ããããŸãããã®ãããªå Žåã¯ãããªããŒããŸã㯠HTTP/2 ãµãŒããŒããã·ã¥ã䜿çšããæ¹ãè¯ãå ŽåããããŸãã
- é »ç¹ãª CSS ã®å€æŽ: CSS ãé »ç¹ã«å€æŽãããå Žåãã¯ãªãã£ã«ã« CSS ãã€ã³ã©ã€ã³åãããšããã£ãã·ã¥ã®åé¡ãçºçããå¯èœæ§ããããŸããCSS ã倿Žããããã³ã«ãHTML ããã¥ã¡ã³ããæŽæ°ããå¿ èŠããããŸããããã¯æéããããå¯èœæ§ããããŸãã
ãã¬ãŒããªããæ éã«æ€èšããç¹å®ã®ãŠã§ããµã€ããšç¶æ³ã«æé©ãª eager loading ãã¯ããã¯ãéžæããããšãéèŠã§ãã
Eager Loading ã®ããã©ãŒãã³ã¹ã®æž¬å®ãšç£èŠ
Eager loading ãã¯ããã¯ãå®è£ ããåŸã倿Žã«ãã£ãŠå®éã«ããŒãæéãæ¹åãããŠããããšã確èªããããã«ããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ã枬å®ããã³ç£èŠããããšãéèŠã§ããEager Loading ã®ããã©ãŒãã³ã¹ã枬å®ããããã«ãããã€ãã®ããŒã«ãšãã¯ããã¯ã䜿çšã§ããŸãã
- WebPageTest: ããŸããŸãªå Žæããã©ãŠã¶ãããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ããã¹ãã§ããç¡æã®ãªã³ã©ã€ã³ããŒã«ãWebPageTest ã¯ãããŒãæéããªãœãŒã¹ãµã€ãºããã®ä»ã®ããã©ãŒãã³ã¹ã¡ããªã¯ã¹ã«é¢ãã詳现æ å ±ãæäŸããŸãã
- Google PageSpeed Insights: ãŠã§ããµã€ãã®ããã©ãŒãã³ã¹ãåæããæ¹åã®ããã®æšå¥šäºé ãæäŸããç¡æã®ãªã³ã©ã€ã³ããŒã«ãPageSpeed Insights ã¯ãã³ã¢ãŠã§ããã€ã¿ã«ã¡ããªã¯ã¹ã«é¢ããæ å ±ãæäŸããŸãã
- Chrome DevTools: Chrome DevTools ã¯ããããã¯ãŒã¯ããã«ãããã©ãŒãã³ã¹ããã«ãLighthouse ããã«ãªã©ããŠã§ããµã€ãã®ããã©ãŒãã³ã¹åæã®ããã®ããŸããŸãªããŒã«ãæäŸããŸãã
ãŠã§ããµã€ãã®ããã©ãŒãã³ã¹ã宿çã«ç£èŠããããšã§ãæœåšçãªåé¡ãç¹å®ããå¿ èŠã«å¿ã㊠Eager Loading æŠç¥ã調æŽã§ããŸãã
çµè«: ããé«éãªãŠã§ãã®ããã« Eager Loading ãåãå ¥ãã
CSS ã® Eager Loading ã¯ããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ãåäžããããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããããã®åŒ·åãªãã¯ããã¯ã§ããã¯ãªãã£ã«ã« CSS ãªãœãŒã¹ã®ããŒããåªå ããããšã§ãFOUC/FOIT ãåæžããäœæçãªããã©ãŒãã³ã¹ãåäžãããã³ã¢ãŠã§ããã€ã¿ã«ã¡ããªã¯ã¹ã匷åã§ããŸãã
åŸæ¥ã®æå³ã§ã®åäžã® "CSS Eager Rule" ã¯ãããŸããããEager Loading ã®ååã¯ãã¯ãªãã£ã«ã« CSS ã®ã€ã³ã©ã€ã³åãããªããŒããã¡ãã£ã¢å±æ§ã®æŠç¥çãªäœ¿çšãªã©ãããŸããŸãªãã¯ããã¯ãéããŠå®è£ ãããŸãããã¬ãŒããªããæ éã«æ€èšããç¹å®ã®ãŠã§ããµã€ãã«é©ãããã¯ããã¯ãéžæããããšã§ãäžçäžã®ãŠãŒã¶ãŒã«ãšã£ãŠãããé«éã§ãããå¿çæ§ãé«ããããé åçãªãŠã§ããšã¯ã¹ããªãšã³ã¹ãäœæã§ããŸãã
ãŠã§ããµã€ãã®ããã©ãŒãã³ã¹ãç¶ç¶çã«ç£èŠããæé©ãªçµæã確ä¿ããããã«ãå¿ èŠã«å¿ã㊠Eager Loading æŠç¥ãé©å¿ãããããšãå¿ããªãã§ãã ããããŠã§ããã¯ãããžãŒãé²åããã«ã€ããŠãæ å ±ãåžžã«ææ¡ããæ°ãããã¯ããã¯ã詊ãããšããããžã¿ã«ç°å¢ã§ç«¶äºåãç¶æããããã«éèŠã«ãªããŸãããŠã§ããµã€ããæé©åããéã«ã¯ãã°ããŒãã«ãªãŒãã£ãšã³ã¹ãšã圌ããçµéšããå¯èœæ§ã®ãã倿§ãªãããã¯ãŒã¯æ¡ä»¶ãèæ ®ããŠãã ãããå Žæã«é¢ä¿ãªãããã°ããããŒããããã¹ã ãŒãºãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸãããŠã§ããµã€ãã¯ã仿¥ã®çžäºæ¥ç¶ãããäžçã§ã®æåã«äžå¯æ¬ ã§ãã