์ด
๋์ฑ ๋ฉ์ง ์ ์ ๊ตฌํ์ด ๋งค์ฐ ๊ฐ๋จํ๋ค๋ ๊ฒ์ ๋๋ค. ํ๊ทธ 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" />
์ด ๊ธฐ๋ฅ์ ๊ธฐ๋ฅ๊ณผ ์ฌ์ฉ ์๊ธฐ๋ฅผ ๊ฐ๋ตํ๊ฒ ์ค๋ช
ํ๊ฒ ์ต๋๋ค.
ะะตัะตะนัะธ ะบ :
ํ๋ฆฌ๋ก๋
<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์ ์ ์ฒด ๋ ๋๋ง์ ์ํํ์ง ์์ต๋๋ค.๊ณผ
Firefox์ Safari๋ ์ด ํ๊ทธ๋ฅผ ์ ํ ์ง์ํ์ง ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ์ด ์ง์นจ์ ๋ฐ๋ฅผ ํ์๊ฐ ์์ผ๋ฏ๋ก ์ด๋ ์ฌ์์ ์๋ฐํ์ง ์์ต๋๋ค. ํ์ง๋ง ์ฌ์ ํ ์ฌํ๋ค.
๊ฐ์
์ฌ์ฉ:
<link rel= "preload">
- ๋ช ์ด ์์ ๋ฆฌ์์ค๊ฐ ํ์ํ ๋<link rel= "prefetch">
- ๋ค์ ํ์ด์ง์ ์๋ฃ๊ฐ ํ์ํ ๋<link rel= "preconnect">
- ๋ฆฌ์์ค๊ฐ ๊ณง ํ์ํ๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง ์์ง ํด๋น ๋ฆฌ์์ค์ ์ ์ฒด URL์ ์์ง ๋ชปํ๋ ๊ฒฝ์ฐ<link rel= "dns-prefetch">
- ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฆฌ์์ค๊ฐ ๊ณง ํ์ํ๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง ์ ์ฒด URL์ ์์ง ์์ง ๋ชปํ๋ ๊ฒฝ์ฐ(์ด์ ๋ธ๋ผ์ฐ์ ์ ๊ฒฝ์ฐ)<link rel= "prerender">
โ ์ฌ์ฉ์๊ฐ ํน์ ํ์ด์ง๋ก ์ด๋ํ ๊ฒ์ด๋ผ๊ณ ํ์ ํ๊ณ ํด๋น ํ์ด์ง์ ํ์ ์๋๋ฅผ ๋์ด๊ณ ์ถ์ ๋
์ถ์ฒ : habr.com