Prefetching vs Preloading vs Prerendering
๐ ์น ์ฑ๋ฅ ์ต์ ํ์ 3๋ ๊ธฐ์ ๋น๊ต
ํ๋ ์น ๊ฐ๋ฐ์์๋ ์ฌ์ฉ์ ๊ฒฝํ(UX)์ ๊ทน๋ํํ๊ธฐ ์ํด ๋ฆฌ์์ค ๋ก๋ฉ ์ต์ ํ๊ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ฌ๊ธฐ์ Prefetching, Preloading, Prerendering์ ํต์ฌ์ ์ธ ์ญํ ์ ํ๋ ๊ธฐ์ ๋ค์ธ๋ฐ์, ์ด๋ค์ ์ฐจ์ด์ ์ฌ์ฉ ๋ชฉ์ ์ ์ ๋๋ก ์ดํดํ๋ฉด ์ฑ๋ฅ ์ต์ ํ๋ฅผ ํจ์ฌ ๋ ํจ๊ณผ์ ์ผ๋ก ํ ์ ์์ต๋๋ค. ์ค๋์ ์ด ์ธ ๊ฐ์ง ๊ธฐ์ ์ ๊ฐ๋ ๊ณผ ์ฐจ์ด, ํ์ฉ ์ฌ๋ก๋ฅผ ๊น์ด ์๊ฒ ๋ค๋ค๋ณผ๊ฒ์.
1. Prefetching: ์์ธก ๊ธฐ๋ฐ ๋ฆฌ์์ค ๋ก๋
๐ “์ฌ์ฉ์๊ฐ ๋ค์์ ํ์๋ก ํ ๋ฆฌ์์ค๋ฅผ ๋ฏธ๋ฆฌ ์ค๋น”
Prefetching์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ์ฉ์์ ๋ฏธ๋ ํ๋์ ์์ธกํด ํน์ ๋ฆฌ์์ค๋ฅผ ๋ฏธ๋ฆฌ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ก๋ํ๋ ๊ธฐ์ ์ ๋๋ค.
์ฌ์ฉ์๊ฐ ์์ง ํด๋ฆญํ์ง ์์์ง๋ง, ๊ณง ํด๋ฆญํ ๊ฐ๋ฅ์ฑ์ด ๋์ ๋งํฌ์ ๋ฆฌ์์ค๋ฅผ ์ค๋นํ๋ ๋ฐฉ์์ด์ฃ .
๐ ํน์ง
• ์ธ์ ?
ํ์ฌ ํ์ด์ง ๋ ๋๋ง ์ดํ, ์ฌ์ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํด ๋น๋๊ธฐ๋ก ๋ก๋ํฉ๋๋ค.
• ์ฌ์ฉ ๋ชฉ์ ?
์ฌ์ฉ์๊ฐ ํ์ด์ง ์ด๋ ์, ๋ก๋ ์๊ฐ์ ๋จ์ถํฉ๋๋ค.
• ์ด๋์ ์ฌ์ฉ?
์๋ฅผ ๋ค์ด, ๋ค๋น๊ฒ์ด์ ๋ฉ๋ด, ๋ค์ ํ์ด์ง ๋งํฌ.
๐ง HTML ์์
<link rel="prefetch" href="/next-page.html">
๐ ๏ธ React/Next.js ์์
import Link from "next/link";
function HomePage() {
return (
<Link href="/about" prefetch={true}>
About Us
</Link>
);
}
2. Preloading: ํ์ฌ ํ์ด์ง๋ฅผ ์ํ ๋ฆฌ์์ค ์ฐ์ ๋ก๋
๐ “ํ์ฌ ํ์ด์ง์ ๊ผญ ํ์ํ ๋ฆฌ์์ค๋ฅผ ์ต์ฐ์ ์ ์ผ๋ก ์ค๋น”
Preloading์ ํ์ฌ ํ์ด์ง ๋ ๋๋ง์ ํ์ํ ๋ฆฌ์์ค๋ฅผ ์ฐ์ ์ ์ผ๋ก ๋ค์ด๋ก๋ํ๋๋ก ๋ธ๋ผ์ฐ์ ์ ์ง์ํ๋ ๋ฐฉ์์ ๋๋ค.
๋ธ๋ผ์ฐ์ ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฆฌ์์ค๋ฅผ ๋ก๋ํ๋ ์ฐ์ ์์๋ฅผ ์กฐ์ ํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
๐ ํน์ง
• ์ธ์ ?
ํ์ฌ ํ์ด์ง ๋ ๋๋ง ์ค ์ค์ํ ๋ฆฌ์์ค๋ฅผ ๋จผ์ ๋ก๋ํฉ๋๋ค.
• ์ฌ์ฉ ๋ชฉ์ ?
์ฌ์ฉ์๊ฐ ํ์ด์ง์์ ๋ฐ๋ก ๋ณด๊ฒ ๋ ํต์ฌ ๋ฆฌ์์ค๋ฅผ ๋น ๋ฅด๊ฒ ์ค๋น.
• ์ด๋์ ์ฌ์ฉ?
์นํฐํธ, ์ค์ํ CSS ํ์ผ, ๋ฉ์ธ ๋ฐฐ๋ ์ด๋ฏธ์ง ๋ฑ.
๐ง HTML ์์
<link rel="preload" href="/styles.css" as="style">
<link rel="preload" href="/image.jpg" as="image">
๐ ๏ธ React ์์
function App() {
return (
<>
<link rel="preload" href="/styles.css" as="style" />
<img src="/image.jpg" alt="Main Banner" />
</>
);
}
3. Prerendering: ๋ฏธ๋๋ฅผ ์ํ ์๋ฒฝํ ์ค๋น
๐ “๋ค์ ํ์ด์ง๋ฅผ ์์ ํ ๋ ๋๋งํ๊ณ ์ค๋น”
Prerendering์ ํ์ด์ง์ ๋ฆฌ์์ค๋ฟ ์๋๋ผ, ํ์ด์ง ์์ฒด๋ฅผ ๋ฏธ๋ฆฌ ๋ ๋๋งํ์ฌ ์ค๋นํ๋ ๋ฐฉ์์ ๋๋ค.
์ฌ์ฉ์๊ฐ ๋งํฌ๋ฅผ ํด๋ฆญํ์ ๋ ์ฆ์ ๋ ๋๋ง๋ฉ๋๋ค.
๐ ํน์ง
• ์ธ์ ?
์ฌ์ฉ์๊ฐ ํด๋ฆญํ ๊ฐ๋ฅ์ฑ์ด ๋์ ํ์ด์ง๋ฅผ ์์ํ์ฌ, ์ ์ฒด ํ์ด์ง๋ฅผ ๋ฏธ๋ฆฌ ๋ ๋๋ง.
• ์ฌ์ฉ ๋ชฉ์ ?
ํ์ด์ง ์ ํ ์ ์ง์ฐ ์์ด ์ฆ์ ๋ก๋.
• ์ด๋์ ์ฌ์ฉ?
์ฒซ ๋ฐฉ๋ฌธ ์ดํ ๋ฐ๋ก ์ด๋ํ ๊ฐ๋ฅ์ฑ์ด ๋์ ํ์ด์ง.
๐ง HTML ์์
<link rel="prerender" href="/next-page.html">
๐ ๏ธ React ์์
React์์๋ Prerendering์ ์ง์ ์ฒ๋ฆฌํ๊ธฐ๋ณด๋ค๋ Next.js์ Static Generation ๊ฐ์ ๊ธฐ์ ์ ํ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค.
// Next.js
function getStaticProps() {
return { props: { data: "Prerendered Data" } };
}
export default function Page({ data }) {
return <div>{data}</div>;
}
4. ์ฃผ์ ์ฐจ์ด์ ๋น๊ตํ ๐
๊ธฐ์ ์ฌ์ฉ ์์ ์ฃผ์ ๋ชฉ์ ํ์ฉ ์์
Prefetching ํ์ฌ ํ์ด์ง ๋ ๋๋ง ์๋ฃ ํ ์ฌ์ ๋ฆฌ์์ค ํ์ฉ ๋ค์์ ํ์ํ ๋ฆฌ์์ค ์ค๋น ๋งํฌ๋ ๋ค์ ํ์ด์ง ๋ฐ์ดํฐ
Preloading ํ์ฌ ํ์ด์ง ๋ ๋๋ง ์ค ์ฐ์ ์ฒ๋ฆฌ ํ์ฌ ํ์ด์ง์ ํต์ฌ ๋ฆฌ์์ค ์ค๋น CSS, ์นํฐํธ, ์ค์ ์ด๋ฏธ์ง
Prerendering ๋ฏธ๋์ ๋ฐฉ๋ฌธํ ํ์ด์ง๋ฅผ ์์ ํ ๋ ๋๋ง ์ฌ์ฉ์๊ฐ ํด๋ฆญ ์ฆ์ ์ฝํ ์ธ ์ ๊ณต ์ฌ์ฉ์ ํ๋ ์์ธก ๊ธฐ๋ฐ ํ์ด์ง ์ ํ
5. ์ธ์ , ๋ฌด์์ ์ฌ์ฉํด์ผ ํ ๊น? ๐ง
๐ Prefetching
• ์ฌ์ฉ์๊ฐ ๋งํฌ๋ฅผ ํด๋ฆญํ ๊ฐ๋ฅ์ฑ์ด ๋์ ๊ฒฝ์ฐ.
• ๋ค๋น๊ฒ์ด์ ์ด๋ ์ถ์ฒ ์ฝํ ์ธ ์ ์ ์ฉ.
๐ Preloading
• ํ์ฌ ํ์ด์ง์ ์ค์ํ ๋ฆฌ์์ค๊ฐ ์๋ค๋ฉด.
• ๋ ๋๋ง ์๋๊ฐ ์ค์ํ CSS, JS, ์ด๋ฏธ์ง ํ์ผ์ ์ ์ฉ.
๐ Prerendering
• ํน์ ํ์ด์ง๋ก์ ์ ํ์ด ๋งค์ฐ ๋์ ํ๋ฅ ๋ก ๋ฐ์ํ๋ ๊ฒฝ์ฐ.
• ์ฌ์ฉ์ ์ฌ์ ์์ ํ์คํ ๋ค์์ ๋ฐฉ๋ฌธํ ํ์ด์ง๋ฅผ ์ค๋น.
6. ์ต์ ํ ํ ๐ฏ
1. ์ฌ์ฉ์ ํ๋ ์์ธก
์ฌ์ฉ์๊ฐ ์์ฃผ ๋ฐฉ๋ฌธํ๋ ํจํด์ ๋ถ์ํด Prefetching๊ณผ Prerendering์ ์ ์ฉํฉ๋๋ค.
2. ๋ฆฌ์์ค ํฌ๊ธฐ ๊ณ ๋ ค
ํฐ ๋ฆฌ์์ค๋ Preloading์ผ๋ก ์ ํ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ , ์์ ๋ฆฌ์์ค๋ Prefetching์ผ๋ก ๊ด๋ฆฌํ์ธ์.
3. Lighthouse๋ก ๋ชจ๋ํฐ๋ง
Google Lighthouse๋ฅผ ํ์ฉํด ์ฑ๋ฅ ์ ์๋ฅผ ํ์ธํ๊ณ , ์ต์ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ถ์ํ์ธ์.
๊ฒฐ๋ก : ์ฌ์ฉ์ ๊ฒฝํ์ ์ํ ์ ๋ต์ ์ ํ์ด ์ค์
Prefetching, Preloading, Prerendering์ ๊ฐ๊ฐ์ ๋ชฉ์ ๊ณผ ์ฌ์ฉ ์์ ์ด ๋ค๋ฆ ๋๋ค. ์ฌ๋ฐ๋ฅธ ๊ธฐ์ ์ ์ ์ ํ ์ฌ์ฉํ๋ฉด ํ์ด์ง ๋ก๋ ์๋์ ์ฌ์ฉ์ ๊ฒฝํ์ ํฌ๊ฒ ๊ฐ์ ํ ์ ์์ต๋๋ค.
๐ท์ ์ค์ ๊ฐ๋ฐ์๊ฐ ๋์ด๋ด ์๋น!๐ท