ì¹ ì±ë¥ 리ìì¤
ì¹ ì¬ì´í¸ê° ê°ë¥í ìµê³ ì ì±ë¥ì ê°ì ¸ì¼ íë ë°ìë ë¤ìí ì´ì ê° ììµëë¤. ë¤ìì ê° ì£¼ì ì ëí ì¶ê° ì 보를 ì ê³µíë ë§í¬ë¥¼ í¬í¨í ëª¨ë² ì¬ë¡, ë구, APIì ëí ê°ëµí ê°ìì ëë¤.
ëª¨ë² ì¬ë¡
- ë¸ë¼ì°ì ì ì¤ì ë ëë§ ê²½ë¡ë¥¼ íìµíë ê²ë¶í° ììíì¸ì. ì´ ì§ìì ì¹ ì¬ì´í¸ì ì±ë¥ì ê°ì íë ë°©ë²ì ì´í´íë ë° ëìì´ ë ê²ì ëë¤.
rel=preconnect,rel=dns-prefetch,rel=prefetch,rel=preloadì ê°ì 리ìì¤ íí¸ë¥¼ ì¬ì©íì¸ì.- JavaScriptì í¬ê¸°ë¥¼ ìµìííì¸ì. íì¬ íì´ì§ì íìí JavaScriptë§ ì¬ì©íì¸ì.
- CSS ì±ë¥ ìì ê³ ë ¤.
- ìë²(ëë CDN)ì HTTP/2를 ì¬ì©íì¸ì.
- gzip, Brotli, and Zopfli를 ì¬ì©íì¬ ë¦¬ìì¤ë¥¼ ìì¶íì¸ì.
- ì´ë¯¸ì§ ìµì í (CSS ì ëë©ì´ì ëë ê°ë¥íë¤ë©´ SVG ì¬ì©í기).
- ë·°í¬í¸ ì¸ë¶ì ì í리ì¼ì´ì
ë¶ë¶ì ì§ì° ë¡ë©í기. ê·¸ë ê² í ê²½ì°, SEO를 ìí ë°±ì
ê³íì ë§ë ¨íì¸ì (ì: ë´ í¸ëí½ì ëí´ ì ì²´ íì´ì§ ë ë). ì를 ë¤ì´,
<img>ìììloadingìì± ì¬ì©í기. - ì¬ì©ììê² ì ë§ ì¤ìí ê²ì´ 무ìì¸ì§ ì¸ì§íë ê²ë ì¤ìí©ëë¤. ì ëì ì¸ íì´ë°ì´ ìë ì¬ì©ì ì¸ìì´ ì¤ìí ì ììµëë¤.
ë¹ ë¥´ê² ì ì©í´ 보기
>CSS
ì¹ ì±ë¥ì ì¬ì©ì ê²½íê³¼ ì¸ì§ë ì±ë¥ì ë¬ë ¤ ììµëë¤. critical rendering path 문ììì ë°°ì ë ê²ì²ë¼, ì íµì ë§í¬ íê·¸ì rel="stylesheet"ë¡ CSS를 ì°ê²°íë©´ ë기ì ì¼ë¡ ì¤íëì´ ë ëë§ì ì°¨ë¨í©ëë¤. ë ëë§ì ì°¨ë¨íë CSS를 ì ê±°íì¬ íì´ì§ ë ëë§ì ìµì ííì¸ì.
CSS를 ë¹ë기ì ì¼ë¡ ë¡ëíë ¤ë©´ media íì ì printë¡ ì¤ì í ë¤ì ë¡ëê° ìë£ëë©´ allë¡ ë³ê²½í ì ììµëë¤. ë¤ì ì½ë ì¤ëí«ìë onload ìì±ì´ í¬í¨ëì´ ìì´ JavaScriptê° íìíë¯ë¡, ì íµì í´ë°±ê³¼ noscript를 í¬í¨íë ê²ì´ ì¤ìí©ëë¤.
<link
rel="stylesheet"
href="/path/to/my.css"
media="print"
onload="this.media='all'" />
<noscript><link rel="stylesheet" href="/path/to/my.css" /></noscript>
ì´ ë°©ë²ì ë¨ì ì ì¤íì¼ì´ ì ì©ëì§ ìì í ì¤í¸ì ê¹ë¹¡ì(FOUT)ì ëë¤. ê°ì¥ ê°ë¨í í´ê²°ì± ì í´ë ì쪽ì ë ëëë 모ë ì½í ì¸ , ì¦ ì¤í¬ë¡¤í기 ì ë¸ë¼ì°ì ë·°í¬í¸ìì ë³¼ ì ìë ë´ì©ì íìí CSS를 ì¸ë¼ì¸ì¼ë¡ ë£ë ê²ì ëë¤. ì´ ì¤íì¼ì ê²½ì° CSSê° íì¼ ìì²ì íì§ ì기 ë문ì ì¸ì§ë ì±ë¥ì ê°ì í ê²ì ëë¤.
<style>
/* ì¬ê¸°ì CSS를 ë£ì¼ì¸ì */
</style>
JavaScript
async ëë defer ìì±ì ì¬ì©íê±°ë íì´ì§ì DOM ìì ë¤ì JavaScript ì ì ì ì°ê²°íì¬ JavaScript ë ëë§ ì°¨ë¨ì í¼íì¸ì. JavaScriptë DOM í¸ë¦¬ìì ì¤í¬ë¦½í¸ íê·¸ ë¤ì ëíëë ììë¤ì ë ëë§ë§ ì°¨ë¨í©ëë¤.
ì¹ í°í¸
EOTì TTF íìì 기본ì ì¼ë¡ ìì¶ëì§ ììµëë¤. ì´ë¬í íì¼ ì íë¤ì ëí´ GZIP ëë Brotliì ê°ì ìì¶ì ì ì©íì¸ì. WOFFì WOFF2를 ì¬ì©íì¸ì. ì´ íìë¤ì ìì¶ì´ ë´ì¥ëì´ ììµëë¤.
@font-face ë´ìì font-display: swapì ì¬ì©íì¸ì. font display swapì ì¬ì©íë©´ ë¸ë¼ì°ì ë ë ëë§ì ì°¨ë¨íì§ ìê³ ì ìë ë°±ì ìì¤í í°í¸ë¥¼ ì¬ì©í ê²ì ëë¤. ì¹ í°í¸ì ê°ë¥í í ì ì¬íëë¡ font weight를 ìµì ííì¸ì.
ìì´ì½ ì¹ í°í¸
ê°ë¥íë©´ ìì´ì½ ì¹ í°í¸ë¥¼ í¼íê³ ìì¶ë SVG를 ì¬ì©íì¸ì. HTTP ìì²ì ë°©ì§í기 ìí´ HTML ë§í¬ì ì SVG ë°ì´í°ë¥¼ ì¸ë¼ì¸ì¼ë¡ ë£ì´ ì¶ê°ë¡ ìµì ííì¸ì.
ë구
- Firefox Dev Tools를 ì¬ì©íì¬ ì¬ì´í¸ë¥¼ ë¶ìíë ë°©ë²ì ë°°ìë³´ì¸ì.
- PageSpeed Insightsë¡ íì´ì§ë¥¼ ë¶ìíê³ ì±ë¥ ê°ì ì ëí ì ë°ì ì¸ íí¸ë¥¼ ì»ì ì ììµëë¤.
- Lighthouseë¡ ì±ë¥, SEO, ì ê·¼ì±ì í¬í¨í ì¬ì´í¸ì ë¤ìí 측면ì ëí´ êµ¬ì²´ì ì¼ë¡ ë¶ìí ì ììµëë¤.
- ë¤ìí ì¤ì 기기 ì íê³¼ ìì¹ë¥¼ ì íí ì ìë WebPageTest.orgë¡ íì´ì§ì ìë를 í ì¤í¸í´ ë³´ì¸ì.
- ì¤ì ì¬ì©ì ì§í를 ì ëííë Chrome User Experience Report를 íì©í´ ë³´ì¸ì.
- performance budget를 ì¤ì íì¸ì.
API
- boomerang ë¼ì´ë¸ë¬ë¦¬ë¥¼ ì¬ì©íì¬ ì¬ì©ì ì§í를 ìì§íì¸ì.
- ëë window.performance.timingë¡ ì§ì ì¬ì©ì ì§í를 ìì§íì¸ì.
íì§ ë§ìì¼ í ê²ë¤(ì¢ì§ ìì ì¬ë¡)
- 모ë ê²ì ë¤ì´ë¡ëí기
- ìì¶ëì§ ìì 미ëì´ íì¼ ì¬ì©í기