ํ”„๋ฆฌ๋กœ๋“œ, ํ”„๋ฆฌํŽ˜์น˜ ๋ฐ ๊ธฐํƒ€ ํƒœ๊ทธ

์ด ์›น ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•. ๊ทธ ์ค‘ ํ•˜๋‚˜๋Š” ๋‚˜์ค‘์— ํ•„์š”ํ•  ์ฝ˜ํ…์ธ ๋ฅผ ๋ฏธ๋ฆฌ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. CSS ์‚ฌ์ „ ์ฒ˜๋ฆฌ, ์ „์ฒด ํŽ˜์ด์ง€ ์‚ฌ์ „ ๋ Œ๋”๋ง ๋˜๋Š” ๋„๋ฉ”์ธ ์ด๋ฆ„ ํ™•์ธ. ๋ชจ๋“  ์ž‘์—…์„ ๋ฏธ๋ฆฌ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ ์ฆ‰์‹œ ๊ฒฐ๊ณผ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค! ๋ฉ‹์ง„๋ฐ.

๋”์šฑ ๋ฉ‹์ง„ ์ ์€ ๊ตฌํ˜„์ด ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํƒœ๊ทธ XNUMX๊ฐœ ๋ธŒ๋ผ์šฐ์ €์— ์˜ˆ๋น„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ผ๋Š” ๋ช…๋ น์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

<link rel="prefetch" href="/ko/style.css" as="style" />
<link rel="preload" href="/ko/style.css" as="style" />

<link rel="preconnect" href="https://example.com" />
<link rel="dns-prefetch" href="https://example.com" />

<link rel="prerender" href="https://example.com/about.html" />


์ด ๊ธฐ๋Šฅ์˜ ๊ธฐ๋Šฅ๊ณผ ์‚ฌ์šฉ ์‹œ๊ธฐ๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ะŸะตั€ะตะนั‚ะธ ะบ : ํ”„๋ฆฌ๋กœ๋“œ ยท ํ”„๋ฆฌ ํŽ˜์น˜ ยท ์‚ฌ์ „ ์—ฐ๊ฒฐ ยท DNS ํ”„๋ฆฌํŽ˜์น˜ ยท ์‚ฌ์ „ ๋ Œ๋”๋ง

ํ”„๋ฆฌ๋กœ๋“œ

<link rel= "preload"> ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ๋ฆฌ์†Œ์Šค(์˜ˆ: ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” ์Šคํƒ€์ผ์‹œํŠธ)๋ฅผ ๋กœ๋“œํ•˜๊ณ  ์บ์‹œํ•˜๋„๋ก ๋ธŒ๋ผ์šฐ์ €์— ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋œ ํ›„ ๋ช‡ ์ดˆ ํ›„์— ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์œ ์šฉํ•˜๋ฉฐ ํ”„๋กœ์„ธ์Šค ์†๋„๋ฅผ ๋†’์ด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๋Š” ๋กœ๋“œ ํ›„ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ์•„๋ฌด ์ž‘์—…๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ  ์Šคํƒ€์ผ ์‹œํŠธ๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค๋Š” ๋‹จ์ˆœํžˆ ์บ์‹œ๋˜์–ด ์š”์ฒญ ์‹œ ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ตฌ๋ฌธ

<link rel="preload" href="/ko/style.css" as="style" />

href ๋‹ค์šด๋กœ๋“œํ•˜๋ ค๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.

as ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ํ•ญ๋ชฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • style ์Šคํƒ€์ผ ์‹œํŠธ์˜ ๊ฒฝ์šฐ
  • script ์Šคํฌ๋ฆฝํŠธ์˜ ๊ฒฝ์šฐ,
  • font ๊ธ€๊ผด์˜ ๊ฒฝ์šฐ,
  • fetch ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๋“œ๋œ ๋ฆฌ์†Œ์Šค์˜ ๊ฒฝ์šฐ fetch() ๋˜๋Š” XMLHttpRequest,
  • ์ „์ฒด ๋ชฉ๋ก ๋ณด๊ธฐ MDN์—์„œ.

์†์„ฑ์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. as โ€“ ์ด๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค์šด๋กœ๋“œ์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์ง€์ •ํ•˜๊ณ  ์˜ˆ์•ฝํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์‹œ๊ธฐ

๊ฐ€๊นŒ์šด ์‹œ์ผ ๋‚ด์— ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•  ๋•Œ ์‚ฌ์ „ ๋กœ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด:

  • ์™ธ๋ถ€ ํŒŒ์ผ์˜ ๋น„ํ‘œ์ค€ ๊ธ€๊ผด:
    <!-- index.html -->
    <link rel="stylesheet" href="index.css" />
    /* index.css */
    @font-face {
      src: url('comic-sans.woff2') format('woff2');
    }

    ๊ธฐ๋ณธ์ ์œผ๋กœ comic-sans.woff2 ๋‹ค์šด๋กœ๋“œ ๋ฐ ๊ตฌ๋ฌธ ๋ถ„์„ ํ›„์—๋งŒ ๋กœ๋“œ๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. index.css. ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์œผ๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธ€๊ผด์„ ๋” ์ผ์ฐ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. <link rel= "preload">:

    <link rel="preload" href="comic-sans.woff2" as="font" />
  • ์ ‘๊ทผ ๋ฐฉ์‹์— ๋”ฐ๋ผ ์Šคํƒ€์ผ์„ ๊ตฌ๋ถ„ํ•œ๋‹ค๋ฉด ์ค‘์š”ํ•œ CSS ์ค‘์š”(์ฆ‰์‹œ ๋ Œ๋”๋ง์˜ ๊ฒฝ์šฐ)์™€ ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.
    <style>
    /* Inlined critical styles */
    </style>
    
    <script>
    /* Custom JS that starts downloading non-critical styles */
    loadCSS('/app/non-critical.css');
    </script>

    ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ์ค‘์š”ํ•˜์ง€ ์•Š์€ ์Šคํƒ€์ผ์€ JavaScript๊ฐ€ ์‹คํ–‰๋  ๋•Œ๋งŒ ๋กœ๋“œ๋˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉฐ, ์ด๋Š” ๋ Œ๋”๋ง ํ›„ ๋ช‡ ์ดˆ ํ›„์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JS ์‚ฌ์šฉ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋Œ€์‹  <link rel= "preload">๋” ์ผ์ฐ ๋‹ค์šด๋กœ๋“œ๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋ฉด:

    <style>
    /* Inlined critical styles */
    </style>
    
    <link rel="preload" href="/ko/app/non-critical.css" as="style" />
    
    <script>
    /* Custom JS that starts downloading non-critical styles */
    loadCSS('/app/non-critical.css');
    </script>

์‚ฌ์ „ ๋กœ๋”ฉ์„ ๊ณผ๋„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š”. ๋ชจ๋“  ํ•ญ๋ชฉ์„ ์—ฐ์†์œผ๋กœ ๋กœ๋“œํ•˜๋ฉด ์‚ฌ์ดํŠธ ์†๋„๊ฐ€ ๋งˆ์ˆ ์ฒ˜๋Ÿผ ๋นจ๋ผ์ง€์ง€ ์•Š๊ณ  ์˜คํžˆ๋ ค ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ž‘์—…์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ณ„ํšํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํ”„๋ฆฌํŽ˜์น˜์™€ ํ˜ผ๋™ํ•˜์ง€ ๋งˆ์„ธ์š”.. ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š” <link rel= "preload">, ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋œ ์งํ›„ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ํŽ˜์ด์ง€ ๋“ฑ ๋‚˜์ค‘์— ํ•„์š”ํ•˜๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์„ธ์š”. <link rel= "prefetch">.

์„ธ๋ถ€

ํ•„์ˆ˜ ํƒœ๊ทธ์ž…๋‹ˆ๋‹ค ๋‹ค๋ฅธ ๋ชจ๋“  ํƒœ๊ทธ์™€ ๋‹ฌ๋ฆฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค(์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ). ์‚ฌ์ „ ๋กœ๋”ฉ๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ๋‹ค์Œ์— ์ง€์ •๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. <link rel="preload">. ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด ๋Š๋ฆฐ ์—ฐ๊ฒฐ์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์ „ ๋กœ๋“œ๋ฅผ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ์„  ์ˆœ์œ„. ๋ธŒ๋ผ์šฐ์ €๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋จผ์ € ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๋ฆฌ์†Œ์Šค(์Šคํƒ€์ผ, ์Šคํฌ๋ฆฝํŠธ, ๊ธ€๊ผด ๋“ฑ)์— ์„œ๋กœ ๋‹ค๋ฅธ ์šฐ์„ ์ˆœ์œ„๋ฅผ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ธŒ๋ผ์šฐ์ €๋Š” ์†์„ฑ์— ๋”ฐ๋ผ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. as. Chrome ๋ธŒ๋ผ์šฐ์ €์˜ ๊ฒฝ์šฐ ๋‹ค์Œ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ์šฐ์„ ์ˆœ์œ„ ํ…Œ์ด๋ธ”.

ํ”„๋ฆฌ๋กœ๋“œ, ํ”„๋ฆฌํŽ˜์น˜ ๋ฐ ๊ธฐํƒ€ ํƒœ๊ทธ

ํ”„๋ฆฌ ํŽ˜์น˜

<link rel= "prefetch"> ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋ฆฌ์†Œ์Šค(์˜ˆ: ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” ์Šคํƒ€์ผ ์‹œํŠธ)๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์บ์‹œํ•˜๋„๋ก ๋ธŒ๋ผ์šฐ์ €์— ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ๋กœ๋”ฉ์€ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„๋กœ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ๋” ์ค‘์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฐฉํ•ดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ํŽ˜์ด์ง€์— ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•˜๊ณ  ์ด๋ฅผ ๋ฏธ๋ฆฌ ์บ์‹œํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ๋„ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋กœ๋“œ ํ›„ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด ์•„๋ฌด ์ž‘์—…๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ  ์Šคํƒ€์ผ ์‹œํŠธ๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค๋Š” ๋‹จ์ˆœํžˆ ์บ์‹œ๋˜์–ด ์š”์ฒญ ์‹œ ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ตฌ๋ฌธ

<link rel="prefetch" href="/ko/style.css" as="style" />

href ๋‹ค์šด๋กœ๋“œํ•˜๋ ค๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.

as ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ํ•ญ๋ชฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • style ์Šคํƒ€์ผ ์‹œํŠธ์˜ ๊ฒฝ์šฐ
  • script ์Šคํฌ๋ฆฝํŠธ์˜ ๊ฒฝ์šฐ,
  • font ๊ธ€๊ผด์˜ ๊ฒฝ์šฐ,
  • fetch ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๋“œ๋œ ๋ฆฌ์†Œ์Šค์˜ ๊ฒฝ์šฐ fetch() ๋˜๋Š” XMLHttpRequest,
  • ์ „์ฒด ๋ชฉ๋ก ๋ณด๊ธฐ MDN์—์„œ.

์†์„ฑ์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. as - ์ด๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค์šด๋กœ๋“œ์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ง€์ •ํ•˜๊ณ  ์˜ˆ์•ฝํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์‹œ๊ธฐ

๋‹ค๋ฅธ ํŽ˜์ด์ง€์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋กœ๋“œํ•˜๋ ค๋ฉด, ๋‹ค๋ฅธ ํŽ˜์ด์ง€์˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•˜๊ณ  ์ด๋ฅผ ๋ฏธ๋ฆฌ ๋กœ๋“œํ•˜์—ฌ ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ๋ Œ๋”๋ง ์†๋„๋ฅผ ๋†’์ด๋ ค๋Š” ๊ฒฝ์šฐ. ์˜ˆ๋ฅผ ๋“ค์–ด:

  • ์˜จ๋ผ์ธ ์ƒ์ ์ด ์žˆ๊ณ  ์‚ฌ์šฉ์ž์˜ 40%๊ฐ€ ์ œํ’ˆ ํŽ˜์ด์ง€๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด ํ™ˆ ํŽ˜์ด์ง€๋ฅผ ๋– ๋‚ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ <link rel= "prefetch">, CSS ๋ฐ JS ํŒŒ์ผ์„ ๋กœ๋“œํ•˜์—ฌ ์ œํ’ˆ ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹จ์ผ ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์žˆ๊ณ  ํŽ˜์ด์ง€๋งˆ๋‹ค ์„œ๋กœ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋ฅผ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋ฐฉ๋ฌธํ•˜๋ฉด ๋งํฌ๋œ ๋ชจ๋“  ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ํŒจํ‚ค์ง€๊ฐ€ ๋ฏธ๋ฆฌ ๋กœ๋“œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํƒœ๊ทธ๋Š” ์–ด๋Š ์ •๋„ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.. ๋ธŒ๋ผ์šฐ์ €๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ€์žฅ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„๋กœ ํ”„๋ฆฌํŽ˜์น˜๋ฅผ ์˜ˆ์•ฝํ•˜๋ฏ€๋กœ ๋ˆ„๊ตฌ์—๊ฒŒ๋„ ๋ฐฉํ•ด๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ํŠธ๋ž˜ํ”ฝ์„ ์†Œ๋น„ํ•˜๋ฏ€๋กœ ๋น„์šฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๋ช…์‹ฌํ•˜์„ธ์š”.

๊ธด๊ธ‰์š”์ฒญ์ด ์•„๋‹Œ ๊ฒฝ์šฐ. ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š” <link rel= "prefetch">, ๋ช‡ ์ดˆ ์•ˆ์— ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•  ๋•Œ. ์ด ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. <link rel= "preload">.

์„ธ๋ถ€

์„ ํƒ์  ํƒœ๊ทธ. ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด ์ง€์นจ์„ ๋”ฐ๋ฅผ ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ, ์˜ˆ๋ฅผ ๋“ค์–ด ์—ฐ๊ฒฐ ์†๋„๊ฐ€ ๋Š๋ฆฐ ๊ฒฝ์šฐ์—๋Š” ์ด๋ฅผ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Chrome์˜ ์šฐ์„ ์ˆœ์œ„. ํฌ๋กฌ์—์„œ <link rel= "prefetch"> ์ผ๋ฐ˜์ ์œผ๋กœ ์ตœ์†Œ ์šฐ์„ ์ˆœ์œ„๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค(์ฐธ์กฐ: ์ „์ฒด ์šฐ์„ ์ˆœ์œ„ ํ…Œ์ด๋ธ”), ์ฆ‰, ๋‹ค๋ฅธ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ๋กœ๋“œํ•œ ํ›„์ž…๋‹ˆ๋‹ค.

์‚ฌ์ „ ์—ฐ๊ฒฐ

<link rel= "preconnect"> ๋‚˜์ค‘์— ์—ฐ๊ฒฐ ์„ค์ • ์†๋„๋ฅผ ๋†’์ด๋ ค๋ฉด ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋„๋ฉ”์ธ์— ๋ฏธ๋ฆฌ ์—ฐ๊ฒฐํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๋Š” ์ƒˆ๋กœ์šด ํƒ€์‚ฌ ๋„๋ฉ”์ธ์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒฝ์šฐ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Google ๊ธ€๊ผด, CDN์˜ React ๊ธ€๊ผด์„ ๋กœ๋“œํ•˜๊ฑฐ๋‚˜ API ์„œ๋ฒ„์—์„œ JSON ์‘๋‹ต์„ ์š”์ฒญํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋Š” ๋ฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ˆ˜๋ฐฑ ๋ฐ€๋ฆฌ์ดˆ๊ฐ€ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ ์™„๋ฃŒ๋˜์—ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ๋ฏธ๋ฆฌ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•œ ๊ฒฝ์šฐ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ  ์ด ๋„๋ฉ”์ธ์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ๋ฌธ

<link rel= "preconnect" href="https://api.my-app.com" />

href IP ์ฃผ์†Œ๋ฅผ ๊ฒฐ์ •ํ•˜๋ ค๋Š” ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ ‘๋‘์‚ฌ(https://domain.com) ๋˜๋Š” ๊ทธ๊ฒƒ ์—†์ด(//domain.com).

์‚ฌ์šฉ์‹œ๊ธฐ

๊ณง ํ•„์š”ํ•  ๋„๋ฉ”์ธ์— ์‚ฌ์šฉ ๊ฑฐ๊ธฐ์—์„œ ์ค‘์š”ํ•œ ์Šคํƒ€์ผ, ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์ง€๋งŒ ์•„์ง ๋ฆฌ์†Œ์Šค URL์„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

  • ๊ท€ํ•˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹ค์Œ์—์„œ ํ˜ธ์ŠคํŒ…๋ฉ๋‹ˆ๋‹ค. my-app.com AJAX ์š”์ฒญ์„ ํ•ฉ๋‹ˆ๋‹ค. api.my-app.com: JS์—์„œ ๋™์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ์ฒด์ ์ธ ์ฟผ๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„๋ฉ”์ธ์— ๋ฏธ๋ฆฌ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค.
  • ๊ท€ํ•˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹ค์Œ์—์„œ ํ˜ธ์ŠคํŒ…๋ฉ๋‹ˆ๋‹ค. my-app.com Google ๊ธ€๊ผด์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋‹จ๊ณ„๋กœ ๋‹ค์šด๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ๋จผ์ € CSS ํŒŒ์ผ์ด ๋„๋ฉ”์ธ์—์„œ ๋‹ค์šด๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. fonts.googleapis.com, ์ด ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธ€๊ผด์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. fonts.gstatic.com. ์–ด๋–ค ํŠน์ • ๊ธ€๊ผด ํŒŒ์ผ์ด ์ถœ์ฒ˜์ธ์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. fonts.gstatic.com CSS ํŒŒ์ผ์„ ๋กœ๋“œํ•  ๋•Œ๊นŒ์ง€ ํ•„์š”ํ•˜๋ฏ€๋กœ ์‚ฌ์ „์— ์˜ˆ๋น„ ์—ฐ๊ฒฐ๋งŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ถ€ ํƒ€์‚ฌ ์Šคํฌ๋ฆฝํŠธ๋‚˜ ์Šคํƒ€์ผ์˜ ์†๋„๋ฅผ ์•ฝ๊ฐ„ ๋†’์ด๋ ค๋ฉด ์ด ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์‚ฌ์ „ ์„ค์ •๋œ ์—ฐ๊ฒฐ๋กœ ์ธํ•ด.

๊ณผ๋„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๊ณ  ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๋ชจ๋‘์—๊ฒŒ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์ตœ๋Œ€ 4~6๊ฐœ์˜ ๋„๋ฉ”์ธ์— ์ด ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

์„ธ๋ถ€

์„ ํƒ์  ํƒœ๊ทธ. ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด ์ง€์นจ์„ ๋”ฐ๋ฅผ ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋ฏธ ๋งŽ์€ ์—ฐ๊ฒฐ์ด ์„ค์ •๋˜์—ˆ๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋Š” ์ด๋ฅผ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฐ๊ฒฐ ํ”„๋กœ์„ธ์Šค์—๋Š” ๋ฌด์—‡์ด ํฌํ•จ๋ฉ๋‹ˆ๊นŒ?. ๊ฐ ์‚ฌ์ดํŠธ์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • DNS ํ™•์ธ. ์„œ๋ฒ„ IP ์ฃผ์†Œ ์ฐพ๊ธฐ(216.58.215.78) ์ง€์ •๋œ ๋„๋ฉ”์ธ ์ด๋ฆ„(google.com).
  • TCP ํ•ธ๋“œ์…ฐ์ดํฌ. ํŒจํ‚ท์„ ๊ตํ™˜(ํด๋ผ์ด์–ธํŠธ โ†’ ์„œ๋ฒ„ โ†’ ํด๋ผ์ด์–ธํŠธ)ํ•˜์—ฌ ์„œ๋ฒ„์™€์˜ TCP ์—ฐ๊ฒฐ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • TLS ํ•ธ๋“œ์…ฐ์ดํฌ(HTTPS ์‚ฌ์ดํŠธ์—๋งŒ ํ•ด๋‹น). ๋ณด์•ˆ TLS ์„ธ์…˜์„ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ๋‘ ๋ผ์šด๋“œ์˜ ํŒจํ‚ท ๊ตํ™˜(ํด๋ผ์ด์–ธํŠธ โ†’ ์„œ๋ฒ„ โ†’ ํด๋ผ์ด์–ธํŠธ โ†’ ์„œ๋ฒ„ โ†’ ํด๋ผ์ด์–ธํŠธ)

์ฐธ๊ณ : HTTP/3์€ ํ•ธ๋“œ์…ฐ์ดํฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ฐœ์„ ํ•˜๊ณ  ์†๋„๋ฅผ ๋†’์ด์ง€๋งŒ ์•„์ง ๊ฐˆ ๊ธธ์ด ๋ฉ€์Šต๋‹ˆ๋‹ค.

DNS ํ”„๋ฆฌํŽ˜์น˜

<link rel= "dns-prefetch"> ๊ณง ์—ฐ๊ฒฐํ•  ์˜ˆ์ •์ด๊ณ  ์ดˆ๊ธฐ ์—ฐ๊ฒฐ ์†๋„๋ฅผ ๋†’์ด๋ ค๋Š” ๊ฒฝ์šฐ ๋ธŒ๋ผ์šฐ์ €์— ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ DNS ํ™•์ธ์„ ๋ฏธ๋ฆฌ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๋Š” ์ƒˆ๋กœ์šด ํƒ€์‚ฌ ๋„๋ฉ”์ธ์—์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ ค๋ฉด ๋„๋ฉ”์ธ์˜ IP ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Google ๊ธ€๊ผด์„ ๋กœ๋“œํ•˜๊ฑฐ๋‚˜ CDN์—์„œ React ๊ธ€๊ผด์„ ๋กœ๋“œํ•˜๊ฑฐ๋‚˜ API ์„œ๋ฒ„์—์„œ JSON ์‘๋‹ต์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

๊ฐ๊ฐ์˜ ์ƒˆ ๋„๋ฉ”์ธ์— ๋Œ€ํ•ด DNS ๋ ˆ์ฝ”๋“œ ํ™•์ธ์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์•ฝ 20-120ms๊ฐ€ ์†Œ์š”๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํŠน์ • ๋„๋ฉ”์ธ์˜ ์ฒซ ๋ฒˆ์งธ ๋ฆฌ์†Œ์Šค ๋กœ๋“œ์—๋งŒ ์˜ํ–ฅ์„ ์ฃผ์ง€๋งŒ ์—ฌ์ „ํžˆ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. DNS ํ™•์ธ์„ ๋ฏธ๋ฆฌ ์ˆ˜ํ–‰ํ•˜๋ฉด ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ  ๋ฆฌ์†Œ์Šค๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ๋ฌธ

<link rel= "dns-prefetch" href="https://api.my-app.com" />

href IP ์ฃผ์†Œ๋ฅผ ์„ค์ •ํ•˜๋ ค๋Š” ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ ‘๋‘์‚ฌ(https://domain.com) ๋˜๋Š” ๊ทธ๊ฒƒ ์—†์ด(//domain.com).

์‚ฌ์šฉ์‹œ๊ธฐ

๊ณง ํ•„์š”ํ•  ๋„๋ฉ”์ธ์— ์‚ฌ์šฉ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฏธ๋ฆฌ ์•Œ์ง€ ๋ชปํ•˜๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฑฐ๊ธฐ์—์„œ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

  • ๊ท€ํ•˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹ค์Œ์—์„œ ํ˜ธ์ŠคํŒ…๋ฉ๋‹ˆ๋‹ค. my-app.com AJAX ์š”์ฒญ์„ ํ•ฉ๋‹ˆ๋‹ค. api.my-app.com: JS์—์„œ ๋™์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ์ฒด์ ์ธ ์ฟผ๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„๋ฉ”์ธ์— ๋ฏธ๋ฆฌ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ ์ ˆํ•ฉ๋‹ˆ๋‹ค.
  • ๊ท€ํ•˜์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹ค์Œ์—์„œ ํ˜ธ์ŠคํŒ…๋ฉ๋‹ˆ๋‹ค. my-app.com, Google ๊ธ€๊ผด์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋‹จ๊ณ„๋กœ ๋‹ค์šด๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ๋จผ์ € CSS ํŒŒ์ผ์ด ๋„๋ฉ”์ธ์—์„œ ๋‹ค์šด๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. fonts.googleapis.com, ์ด ํŒŒ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธ€๊ผด์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. fonts.gstatic.com. ์–ด๋–ค ํŠน์ • ๊ธ€๊ผด ํŒŒ์ผ์ด ์ถœ์ฒ˜์ธ์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. fonts.gstatic.com CSS ํŒŒ์ผ์„ ๋กœ๋“œํ•  ๋•Œ๊นŒ์ง€ ํ•„์š”ํ•˜๋ฏ€๋กœ ์‚ฌ์ „์— ์˜ˆ๋น„ ์—ฐ๊ฒฐ๋งŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ถ€ ํƒ€์‚ฌ ์Šคํฌ๋ฆฝํŠธ๋‚˜ ์Šคํƒ€์ผ์˜ ์†๋„๋ฅผ ์•ฝ๊ฐ„ ๋†’์ด๋ ค๋ฉด ์ด ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์‚ฌ์ „ ์„ค์ •๋œ ์—ฐ๊ฒฐ๋กœ ์ธํ•ด.

๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ํŠน์„ฑ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”. <link rel= "dns-prefetch"/> ะธ <link rel= "preconnect">. ์ผ๋ฐ˜์ ์œผ๋กœ ํ•˜๋‚˜์˜ ๋„๋ฉ”์ธ์— ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. <link rel= "preconnect"> ์ด๋ฏธ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค <link rel= "dns-prefetch"/> ๊ทธ๋ฆฌ๊ณ  ํ›จ์”ฌ ๋”. ์ด๋Š” ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ์— ์ •๋‹นํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ด์ „ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ง€์›ํ•˜๊ณ  ์‹ถ๋‚˜์š”?. <link rel= "dns-prefetch" /> ์— ์˜ํ•ด ์ง€์› IE10 ๋ฐ Safari 5๋ถ€ํ„ฐ. <link rel= "preconnect"> Chrome ๋ฐ Firefox์—์„œ ํ•œ๋™์•ˆ ์ง€์›๋˜์—ˆ์ง€๋งŒ 11.1์˜ Safari์—๋งŒ ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ IE/Edge์—์„œ๋Š” ์•„์ง ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.. ์ด๋Ÿฌํ•œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ง€์›ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์„ธ์š”. <link rel= "dns-prefetch" /> ๋ฐฑ์—… ์˜ต์…˜์œผ๋กœ <link rel= "preconnect">.
  • 4~6๊ฐœ ์ด์ƒ์˜ ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ ์†๋„๋ฅผ ๋†’์ด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.. ๊ผฌ๋ฆฌํ‘œ <link rel= "preconnect"> ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๊ณ  ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์ž‘์—…์ด๋ฏ€๋กœ 4~6๊ฐœ ์ด์ƒ์˜ ๋„๋ฉ”์ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ถŒ์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. <link rel= "dns-prefetch" /> ๋ฆฌ์†Œ์Šค ์†Œ๋ชจ๊ฐ€ ์ ์œผ๋ฏ€๋กœ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜์„ธ์š”.

์„ธ๋ถ€

์„ ํƒ์  ํƒœ๊ทธ. ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด ์ง€์นจ์„ ๋”ฐ๋ฅผ ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ, ์˜ˆ๋ฅผ ๋“ค์–ด ํŽ˜์ด์ง€์— ๊ทธ๋Ÿฌํ•œ ํƒœ๊ทธ๊ฐ€ ๋งŽ๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋Š” DNS ํ™•์ธ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

DNS ๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?. ์ธํ„ฐ๋„ท์˜ ๊ฐ ์„œ๋ฒ„์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณ ์œ ํ•œ IP ์ฃผ์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 216.58.215.78. ์‚ฌ์ดํŠธ ์ด๋ฆ„์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์†Œ ํ‘œ์‹œ์ค„์— ์ž…๋ ฅ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: google.com), DNS(Domain Name System) ์„œ๋ฒ„๋Š” ์ด๋ฅผ ์„œ๋ฒ„์˜ IP ์ฃผ์†Œ(216.58.215.78).

IP ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ DNS ์„œ๋ฒ„์— ์ฟผ๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ํƒ€์‚ฌ ๋„๋ฉ”์ธ์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ 20~120ms๊ฐ€ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

DNS๋Š” ์บ์‹œ๋˜์ง€๋งŒ ๊ทธ๋‹ค์ง€ ์•ˆ์ •์ ์ด์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.. ์ผ๋ถ€ OS ๋ฐ ๋ธŒ๋ผ์šฐ์ €๋Š” DNS ์ฟผ๋ฆฌ๋ฅผ ์บ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฐ˜๋ณต ์ฟผ๋ฆฌ์—์„œ ์‹œ๊ฐ„์ด ์ ˆ์•ฝ๋˜์ง€๋งŒ ์บ์‹ฑ์„ ์‹ ๋ขฐํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. Linux์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ „ํ˜€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Chrome์—๋Š” DNS ์บ์‹œ๊ฐ€ ์žˆ์ง€๋งŒ XNUMX๋ถ„ ๋™์•ˆ๋งŒ ์ง€์†๋ฉ๋‹ˆ๋‹ค. Windows๋Š” XNUMX์ผ ๋™์•ˆ DNS ์‘๋‹ต์„ ์บ์‹œํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์ „ ๋ Œ๋”๋ง

<link rel= "prerender"> ๋ธŒ๋ผ์šฐ์ €์— URL์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ๋ณด์ด์ง€ ์•Š๋Š” ํƒญ์— ํ‘œ์‹œํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด ํŽ˜์ด์ง€๊ฐ€ ์ฆ‰์‹œ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ํŽ˜์ด์ง€๋ฅผ ๋ฐฉ๋ฌธํ•  ๊ฒƒ์ด ํ™•์‹คํ•˜๊ณ  ํ‘œ์‹œ ์†๋„๋ฅผ ๋†’์ด๋ ค๋Š” ๊ฒฝ์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด ํƒœ๊ทธ์˜ ํƒ์›”ํ•œ ํšจ์œจ์„ฑ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ (๋˜๋Š” ๊ทธ๋กœ ์ธํ•ด) 2019๋…„ <link rel= "prerender"> ์ฃผ์š” ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์ œ๋Œ€๋กœ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ๋ณด๊ธฐ. ์ดํ•˜.

๊ตฌ๋ฌธ

<link rel="prerender" href="https://my-app.com/pricing" />

href ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋ Œ๋”๋ง์„ ์‹œ์ž‘ํ•˜๋ ค๋Š” URL์„ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์‹œ๊ธฐ

์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•˜๋Š” ๊ฒฝ์šฐ. A ํŽ˜์ด์ง€ ๋ฐฉ๋ฌธ์ž์˜ 70%๊ฐ€ B ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋Š” "ํ„ฐ๋„"์ด ์žˆ๋‹ค๋ฉด <link rel= "prerender"> ํŽ˜์ด์ง€ A๋Š” ํŽ˜์ด์ง€ B๋ฅผ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ํ‘œ์‹œํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๊ณผ๋„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์‚ฌ์ „ ๋ Œ๋”๋ง์€ ๋Œ€์—ญํญ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์ธก๋ฉด์—์„œ ๋งค์šฐ ๋น„์Œ‰๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š” <link rel= "prerender"> ํ•œ ํŽ˜์ด์ง€ ์ด์ƒ.

์„ธ๋ถ€

์„ ํƒ์  ํƒœ๊ทธ. ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด ์ง€์นจ์„ ๋”ฐ๋ฅผ ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ, ์˜ˆ๋ฅผ ๋“ค์–ด ์—ฐ๊ฒฐ์ด ๋Š๋ฆฌ๊ฑฐ๋‚˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•œ ๊ฒฝ์šฐ ์ด๋ฅผ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ˆ์•ฝํ•˜๋ ค๋ฉด Chrome์€ ์ „์ฒด ๋ Œ๋”๋ง์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.๊ณผ NoState๋งŒ ๋ฏธ๋ฆฌ ๋กœ๋“œ. ์ฆ‰, Chrome์€ ํŽ˜์ด์ง€์™€ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋ฅผ ๋กœ๋“œํ•˜์ง€๋งŒ JavaScript๋ฅผ ๋ Œ๋”๋งํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

Firefox์™€ Safari๋Š” ์ด ํƒœ๊ทธ๋ฅผ ์ „ํ˜€ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด ์ง€์นจ์„ ๋”ฐ๋ฅผ ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์ด๋Š” ์‚ฌ์–‘์„ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ์Šฌํ”„๋‹ค. ๊ตฌํ˜„ ๋ฒ„๊ทธ Firefox๊ฐ€ ์˜คํ”ˆ๋œ ์ง€ XNUMX๋…„์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Safari๋ผ๋Š” ๋ณด๊ณ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํƒœ๊ทธ๋„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฐœ์š”

์‚ฌ์šฉ:

  • <link rel= "preload"> - ๋ช‡ ์ดˆ ์•ˆ์— ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•  ๋•Œ
  • <link rel= "prefetch"> - ๋‹ค์Œ ํŽ˜์ด์ง€์˜ ์ž๋ฃŒ๊ฐ€ ํ•„์š”ํ•  ๋•Œ
  • <link rel= "preconnect"> - ๋ฆฌ์†Œ์Šค๊ฐ€ ๊ณง ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์•„์ง ํ•ด๋‹น ๋ฆฌ์†Œ์Šค์˜ ์ „์ฒด URL์„ ์•Œ์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ
  • <link rel= "dns-prefetch"> - ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฆฌ์†Œ์Šค๊ฐ€ ๊ณง ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ์ „์ฒด URL์„ ์•„์ง ์•Œ์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ(์ด์ „ ๋ธŒ๋ผ์šฐ์ €์˜ ๊ฒฝ์šฐ)
  • <link rel= "prerender"> โ€” ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•˜๊ณ  ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ํ‘œ์‹œ ์†๋„๋ฅผ ๋†’์ด๊ณ  ์‹ถ์„ ๋•Œ

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€