prefetchDNS
prefetchDNS
๋ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ ธ์ฌ ๊ฒ์ผ๋ก ์์ํ๋ ์๋ฒ์ IP๋ฅผ ๋ฏธ๋ฆฌ ์กฐํํ ์ ์๊ฒ ํด์ค๋๋ค.
prefetchDNS("https://example.com");
๋ ํผ๋ฐ์ค
prefetchDNS(href)
ํธ์คํธ์ ๋ฏธ๋ฆฌ ์ฐ๊ฒฐํ๋ ค๋ฉด, react-dom
์์ prefetchDNS
๋ฅผ ํธ์ถํฉ๋๋ค.
import { prefetchDNS } from 'react-dom';
function AppRoot() {
prefetchDNS("https://example.com");
// ...
}
์๋ ์์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
prefetchDNS
๋ ๋ธ๋ผ์ฐ์ ์๊ฒ ์ฃผ์ด์ง ์๋ฒ์ IP ์ฃผ์๋ฅผ ์กฐํํด์ผ ํ๋ค๋ ํํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ฅผ ์ํํ๊ธฐ๋ก ์ ํํ๋ฉด ํด๋น ์๋ฒ์์ ๋ฆฌ์์ค๋ฅผ ๋ก๋ฉํ๋ ์๋๊ฐ ๋นจ๋ผ์ง ์ ์์ต๋๋ค.
๋งค๊ฐ๋ณ์
href
: ๋ฌธ์์ด. ์ฐ๊ฒฐํ๋ ค๋ ์๋ฒ์ URL์ ๋๋ค.
๋ฐํ๊ฐ
prefetchDNS
๋ ์๋ฌด ๊ฐ๋ ๋ฐํํ์ง ์์ต๋๋ค.
์ฃผ์ ์ฌํญ
- ๋์ผํ ์๋ฒ์ ๋ํด ์ฌ๋ฌ ๋ฒ์
prefetchDNS
ํธ์ถ์ ํ ๋ฒ์ ํธ์ถ๊ณผ ๋์ผํ ํจ๊ณผ๋ฅผ ๊ฐ์ต๋๋ค. - ๋ธ๋ผ์ฐ์ ์์๋
prefetchDNS
๋ฅผ ์ปดํฌ๋ํธ ๋ ๋๋งํ ๋, Effect ๋ด๋ถ, ์ด๋ฒคํธ ํธ๋ค๋ฌ ๋ฑ ๋ชจ๋ ์ํฉ์์ ํธ์ถํ ์ ์์ต๋๋ค. - ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง ๋๋ ์๋ฒ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ ๋,
prefetchDNS
๋ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ๋ ๋์ ๋๋ ์ปดํฌ๋ํธ ๋ ๋๋ง์์ ์์๋ ๋น๋๊ธฐ ์ปจํ ์คํธ ๋ด์์ ํธ์ถํ๋ ๊ฒฝ์ฐ์๋ง ํจ๊ณผ๊ฐ ์์ต๋๋ค. ๊ทธ ์ธ์ ํธ์ถ์ ๋ฌด์๋ฉ๋๋ค. - ํ์ํ ํน์ ๋ฆฌ์์ค๋ฅผ ์๊ณ ์๋ค๋ฉด, ๋ฆฌ์์ค๋ฅผ ์ฆ์ ๋ก๋ฉํ ์ ์๋ ๋ค๋ฅธ ํจ์๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค.
- ์นํ์ด์ง ์์ฒด๊ฐ ํธ์คํ ๋๋ ๋์ผํ ์๋ฒ๋ฅผ ๋ฏธ๋ฆฌ ์กฐํํ๋ ๊ฒ์ ์ด์ ์ด ์์ต๋๋ค. ํํธ๊ฐ ์ฃผ์ด์ง ์์ ์๋ ์ด๋ฏธ ์กฐํ๊ฐ ์๋ฃ๋์๊ธฐ ๋๋ฌธ์ ๋๋ค.
preconnect
์ ๋น๊ตํ์ ๋,prefetchDNS
๋ ์ฌ๋ฌ ๋๋ฉ์ธ์ ๋ํด ์ฌ์ ์ฐ๊ฒฐ์ ์๋ํ๋ ๊ฒฝ์ฐ, ์ฌ์ ์ฐ๊ฒฐ์ ์ค๋ฒํค๋๊ฐ ์ด์ ์ ์์ํ ์ ์๋ค๋ ์ ์์ ๋ ๋์ ์ ์์ต๋๋ค.
์ฌ์ฉ๋ฒ
๋ ๋๋ง ์ DNS ๋ฏธ๋ฆฌ ๊ฐ์ ธ์ค๊ธฐ
ํด๋น ์ปดํฌ๋ํธ์ ์์๋ค์ด ํด๋น ํธ์คํธ์์ ์ธ๋ถ ๋ฆฌ์์ค๋ฅผ ๋ก๋ฉํ ๊ฒ์ ์๊ณ ์๋ค๋ฉด, ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ ๋ prefetchDNS
๋ฅผ ํธ์ถํ์ธ์.
import { prefetchDNS } from 'react-dom';
function AppRoot() {
prefetchDNS("https://example.com");
return ...;
}
์ด๋ฒคํธ ํธ๋ค๋ฌ์์ DNS ๋ฏธ๋ฆฌ ๊ฐ์ ธ์ค๊ธฐ
์ธ๋ถ ๋ฆฌ์์ค๊ฐ ํ์ํ ํ์ด์ง๋ State๋ก ์ ํํ๊ธฐ ์ ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ์์ prefetchDNS
๋ฅผ ํธ์ถํ์ธ์. ์ด๋ ๊ฒ ํ๋ฉด ์๋ก์ด ํ์ด์ง๋ State๋ฅผ ๋ ๋๋งํ ๋ ํธ์ถํ๋ ๊ฒ๋ณด๋ค ๋ ์ผ์ฐ ํ๋ก์ธ์ค๋ฅผ ์์ํ ์ ์์ต๋๋ค.
import { prefetchDNS } from 'react-dom';
function CallToAction() {
const onClick = () => {
prefetchDNS('http://example.com');
startWizard();
}
return (
<button onClick={onClick}>Start Wizard</button>
);
}