CSS ํ๋ฆฌํ์น ๊ท์น์ ํ์ฉํ์ฌ ์น์ฌ์ดํธ ๋ก๋ฉ ์๋๋ฅผ ํ๊ธฐ์ ์ผ๋ก ๊ฐ์ ํ๊ณ , ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํค๋ฉฐ, SEO ์ฑ๋ฅ์ ๋์ด๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์. ๋ฆฌ์์ค ํ๋ฆฌํ์น๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ตฌํํ์ธ์.
๋ ๋น ๋ฅธ ์น์ฌ์ดํธ ๊ตฌํ: CSS ํ๋ฆฌํ์น ์ข ํฉ ๊ฐ์ด๋
์น ๊ฐ๋ฐ ๋ถ์ผ์์ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ๋ก๋ฉ์ด ๋๋ฆฐ ์น์ฌ์ดํธ๋ ์ฌ์ฉ์์ ๋ถ๋ง์ ์ผ๊ธฐํ๊ณ , ์ฅ๋ฐ๊ตฌ๋๋ฅผ ํฌ๊ธฐํ๊ฒ ๋ง๋ค๋ฉฐ, ๊ถ๊ทน์ ์ผ๋ก๋ ๋น์ฆ๋์ค์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ด ๋ฌธ์ ์ ๋์ํ๋ ๊ฐ๋ ฅํ ๊ธฐ์ ์ค ํ๋๊ฐ ๋ฐ๋ก CSS ํ๋ฆฌํ์น์ ๋๋ค. ์ด ๊ฐ์ด๋์์๋ CSS ํ๋ฆฌํ์น์ ๋ํ ํฌ๊ด์ ์ธ ๊ฐ์๋ฅผ ์ ๊ณตํ๋ฉฐ, ์น์ฌ์ดํธ ๋ก๋ฉ ์๋๋ฅผ ์ต์ ํํ๊ณ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํค๊ธฐ ์ํ ์ด์ , ๊ตฌํ ์ ๋ต ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ดํด๋ด ๋๋ค.
CSS ํ๋ฆฌํ์น๋ ๋ฌด์์ธ๊ฐ์?
CSS ํ๋ฆฌํ์น๋ ๋ธ๋ผ์ฐ์ ํํธ๋ก, ์ฌ์ฉ์๊ฐ ํ์ฌ ํ์ด์ง๋ฅผ ํ์ํ๋ ๋์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋์์ CSS ํ์ผ(๋๋ ์๋ฐ์คํฌ๋ฆฝํธ, ์ด๋ฏธ์ง, ํฐํธ์ ๊ฐ์ ๋ค๋ฅธ ๋ฆฌ์์ค)์ ๋ค์ด๋ก๋ํ๋๋ก ์ง์ํฉ๋๋ค. ์ด๋ ์ฌ์ฉ์๊ฐ ํด๋น CSS ํ์ผ์ด ํ์ํ ํ์ด์ง๋ก ์ด๋ํ ๋, ํ์ผ์ด ์ด๋ฏธ ๋ธ๋ผ์ฐ์ ์บ์์ ์กด์ฌํ์ฌ ๋ก๋ฉ ์๊ฐ์ด ํฌ๊ฒ ๋จ์ถ๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ด๋ ๊ฒ ์๊ฐํด๋ณด์ธ์. ์๋์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ค๊ณ ์์ํด๋ณด์ธ์. ์๋์ด ๋์ฐฉํ *ํ์์ผ* ๊ทธ๋ค์ด ์ข์ํ๋ ์๋ฃ๋ฅผ ์ค๋นํ๋ ๋์ , ๋์ฐฉ์ ์์ํ๊ณ ๋ฏธ๋ฆฌ ์๋ฃ๋ฅผ ์ค๋นํด ๋ก๋๋ค. ์๋์ด ๋์ฐฉํ์ ๋ ์๋ฃ๋ ์ค๋น๋์ด ์๊ณ , ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์์ต๋๋ค. CSS ํ๋ฆฌํ์น๋ ๋น์ทํ๊ฒ ์๋ํฉ๋๋ค. ํ์ํ ๋ฆฌ์์ค๋ฅผ ์์ธกํ๊ณ ๋ฏธ๋ฆฌ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋๋ค.
CSS ํ๋ฆฌํ์น๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
CSS ํ๋ฆฌํ์น๋ฅผ ๊ตฌํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ค์ํ ์ด์ ์ ์ป์ ์ ์์ต๋๋ค:
- ๋ก๋ฉ ์๋ ๊ฐ์ : ๊ฐ์ฅ ํฐ ์ฅ์ ์ ํ์ด์ง ๋ก๋ฉ ์๊ฐ์ ๋์ ๋๋ ๊ฐ์์ด๋ฉฐ, ํนํ ํ๋ฆฌํ์น๋ CSS์ ์์กดํ๋ ํ์ ํ์ด์ง ์กฐํ์์ ํจ๊ณผ๊ฐ ํฝ๋๋ค.
- ์ฌ์ฉ์ ๊ฒฝํ ํฅ์: ๋ ๋น ๋ฅธ ๋ก๋ฉ ์๋๋ ๋ ๋ถ๋๋ฝ๊ณ ์ฆ๊ฑฐ์ด ์ฌ์ฉ์ ๊ฒฝํ์ผ๋ก ์ง์ ์ด์ด์ง๋๋ค. ์น์ฌ์ดํธ๊ฐ ๋ฐ์์ด ๋น ๋ฅด๊ณ ์ ์ํ๋ค๋ฉด ์ฌ์ฉ์๋ค์ด ๋ ์ค๋ ๋จธ๋ฌด๋ฅผ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
- SEO ์ฑ๋ฅ ํฅ์: ๊ตฌ๊ธ ๋ฐ ๊ธฐํ ๊ฒ์ ์์ง์ ํ์ด์ง ์๋๋ฅผ ์์ ๊ฒฐ์ ์์ธ์ผ๋ก ๊ณ ๋ คํฉ๋๋ค. CSS ํ๋ฆฌํ์น๋ก ์น์ฌ์ดํธ ๋ก๋ฉ ์๋๋ฅผ ์ต์ ํํ๋ฉด ๊ฒ์ ์์ง ์์๋ฅผ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ์๋ฒ ๋ถํ ๊ฐ์: ๋ฆฌ์์ค๋ฅผ ๋ก์ปฌ์ ์บ์ฑํจ์ผ๋ก์จ CSS ํ๋ฆฌํ์น๋ ์๋ฒ์ ๋ํ ์์ฒญ ์๋ฅผ ์ค์ฌ ์๋ฒ ๋ถํ๋ฅผ ๋ฎ์ถ๊ณ ์ ๋ฐ์ ์ธ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
- ์คํ๋ผ์ธ ์ ๊ทผ์ฑ(์๋น์ค ์์ปค์ ํจ๊ป ์ฌ์ฉ ์): ํ๋ฆฌํ์น๋ ๋ฆฌ์์ค๋ ์๋น์ค ์์ปค(Service Workers)์ ๊ฒฐํฉํ์ฌ ๋ ๋์ ์คํ๋ผ์ธ ๊ฒฝํ์ ๊ธฐ์ฌํ ์ ์์ผ๋ฉฐ, ์ฌ์ฉ์๊ฐ ์์ ์ ์ธ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ์์ ๋๋ ์ฝํ ์ธ ์ ์ ๊ทผํ ์ ์๊ฒ ํด์ค๋๋ค.
CSS ํ๋ฆฌํ์น ๊ตฌํ ๋ฐฉ๋ฒ
CSS ํ๋ฆฌํ์น๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ผ๋ฉฐ, ๊ฐ๊ธฐ ์ฅ๋จ์ ์ด ์์ต๋๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ๋ค์ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
1. <link> ํ๊ทธ ์ฌ์ฉํ๊ธฐ
๊ฐ์ฅ ๊ฐ๋จํ๊ณ ๋๋ฆฌ ์ง์๋๋ ๋ฐฉ๋ฒ์ HTML ๋ฌธ์์ <head> ์น์
์ rel="prefetch" ์์ฑ์ ๊ฐ์ง <link> ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค.
์์:
<head>
<link rel="prefetch" href="/styles/main.css" as="style">
</head>
์ค๋ช :
rel="prefetch": ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฆฌ์์ค๋ฅผ ํ๋ฆฌํ์นํด์ผ ํจ์ ์ง์ ํฉ๋๋ค.href="/styles/main.css": ํ๋ฆฌํ์นํ CSS ํ์ผ์ URL์ ์ง์ ํฉ๋๋ค. ์ด ๊ฒฝ๋ก๊ฐ HTML ํ์ผ์ ๊ธฐ์ค์ผ๋ก ์ ํํ์ง ํ์ธํ๊ฑฐ๋ ์ ๋ URL์ ์ฌ์ฉํ์ธ์.as="style": (์ค์!) ์ด ์์ฑ์ ํ๋ฆฌํ์น๋๋ ๋ฆฌ์์ค์ ์ ํ์ ๋ธ๋ผ์ฐ์ ์ ์๋ ค์ค๋๋ค.as="style"์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฆฌ์์ค๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฐ์ ์์๋ฅผ ์ ํ๊ณ ์ฒ๋ฆฌํ๋ ๋ฐ ์ค์ํฉ๋๋ค. ๋ค๋ฅธ ๊ฐ๋ฅํ ๊ฐ์ผ๋ก๋script,image,font,document๊ฐ ์์ต๋๋ค.
๋ชจ๋ฒ ์ฌ๋ก:
<link>ํ๊ทธ๋ฅผ HTML ๋ฌธ์์<head>์น์ ๋ด์ ๋ฐฐ์นํ์ธ์.as์์ฑ์ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค ์ ํ์ ์ง์ ํ์ธ์.href์์ฑ์ URL์ด ์ ํํ์ง ํ์ธํ์ธ์.
2. HTTP Link ํค๋ ์ฌ์ฉํ๊ธฐ
๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์๋ฒ ์๋ต์ Link HTTP ํค๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. ์ด๋ ์๋ฒ ์ธก ๋ก์ง์ ๋ฐ๋ผ ๋์ ์ผ๋ก ๋ฆฌ์์ค๋ฅผ ํ๋ฆฌํ์นํ๋ ค๋ ๊ฒฝ์ฐ์ ํนํ ์ ์ฉํฉ๋๋ค.
์์ (Apache .htaccess):
<FilesMatch "\.(html|php)$">
<IfModule mod_headers.c>
Header add Link '</styles/main.css>; rel=prefetch; as=style'
</IfModule>
</FilesMatch>
์์ (Node.js์ Express):
app.get('/', (req, res) => {
res.setHeader('Link', '</styles/main.css>; rel=prefetch; as=style');
res.sendFile(path.join(__dirname, 'index.html'));
});
์ค๋ช :
Linkํค๋๋ ๋ธ๋ผ์ฐ์ ์๊ฒ ์ง์ ๋ ๋ฆฌ์์ค๋ฅผ ํ๋ฆฌํ์นํ๋๋ก ์ง์ํฉ๋๋ค.- ๊ตฌ๋ฌธ์
<link>ํ๊ทธ์ ์ ์ฌํฉ๋๋ค:<URL>; rel=prefetch; as=style.
์ฅ์ :
- ์๋ฒ ์ธก ๋ก์ง์ ๊ธฐ๋ฐํ ๋์ ํ๋ฆฌํ์นญ.
- ๋ ๊น๋ํ HTML ์ฝ๋.
๋จ์ :
- ์๋ฒ ์ธก ์ค์ ์ด ํ์ํฉ๋๋ค.
3. ์๋ฐ์คํฌ๋ฆฝํธ (๋ ์ผ๋ฐ์ ์ด๋ฉฐ, ์ฃผ์ํด์ ์ฌ์ฉ)
๋ ์ผ๋ฐ์ ์ด๊ณ ๊ธฐ๋ณธ์ ์ธ CSS ํ๋ฆฌํ์นญ์๋ ์ผ๋ฐ์ ์ผ๋ก ๊ถ์ฅ๋์ง ์์ง๋ง, ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋์ ์ผ๋ก <link> ํ๊ทธ๋ฅผ ์์ฑํ๊ณ <head>์ ์ถ๊ฐํ ์ *์์ต๋๋ค*. ์ด๋ ๊ฐ์ฅ ํฐ ์ ์ฐ์ฑ์ ์ ๊ณตํ์ง๋ง ๋ณต์ก์ฑ๊ณผ ์ ์ฌ์ ์ธ ์ฑ๋ฅ ์ค๋ฒํค๋๋ฅผ ์ผ๊ธฐํฉ๋๋ค.
์์:
function prefetchCSS(url) {
const link = document.createElement('link');
link.rel = 'prefetch';
link.href = url;
link.as = 'style';
document.head.appendChild(link);
}
prefetchCSS('/styles/main.css');
ํผํด์ผ ํ ์ด์ (ํ์ํ์ง ์์ ๊ฒฝ์ฐ):
- ์๋ฐ์คํฌ๋ฆฝํธ ์คํ ์ค๋ฒํค๋.
- ํนํ ์ด๊ธฐ ํ์ด์ง ๋ก๋ ์ค์ ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ฐจ๋จํ ๊ฐ๋ฅ์ฑ.
- ๊ตฌํํ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ๊ฐ ๋ ๋ณต์กํจ.
ํ๋ฆฌํ์นญ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํด์ผ ํ ๋:
- ์ฌ์ฉ์ ํ๋์ด๋ ์ฅ์น ํน์ฑ์ ๊ธฐ๋ฐํ ์กฐ๊ฑด๋ถ ํ๋ฆฌํ์นญ.
- ๋์ ์ผ๋ก ์์ฑ๋๊ฑฐ๋ AJAX๋ฅผ ํตํด ๋ก๋๋๋ ๋ฆฌ์์ค ํ๋ฆฌํ์นญ.
CSS ํ๋ฆฌํ์น ๋ชจ๋ฒ ์ฌ๋ก
CSS ํ๋ฆฌํ์น์ ์ด์ ์ ๊ทน๋ํํ๋ ค๋ฉด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด์ธ์:
- ์ค์ ๋ฆฌ์์ค ์ฐ์ ์์ ์ง์ : ์น์ฌ์ดํธ์ ์ด๊ธฐ ๋ ๋๋ง์ ํ์์ ์ธ CSS ํ์ผ์ ํ๋ฆฌํ์นญํ๋ ๋ฐ ์ง์คํ์ธ์. ์ค์ CSS(Critical CSS)์ ๊ฐ์ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ํ์ด์ง ์๋จ ์ฝํ ์ธ ์ ํ์ํ ์คํ์ผ์ ์ธ๋ผ์ธ์ผ๋ก ๋ฃ๊ณ , ๋๋จธ์ง ์คํ์ผ์ ํ๋ฆฌํ์นํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
as์์ฑ ์ฌ์ฉ: ํญ์as์์ฑ์ ์ง์ ํ์ฌ ๋ธ๋ผ์ฐ์ ์ ๋ฆฌ์์ค ์ ํ์ ์๋ ค์ฃผ์ธ์. ์ด๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฆฌ์์ค๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฐ์ ์์๋ฅผ ์ ํ๊ณ ์ฒ๋ฆฌํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.- ๋คํธ์ํฌ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง: ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ ์์ฒญ์ ๋ชจ๋ํฐ๋งํ๊ณ ํ๋ฆฌํ์น๋ ๋ฆฌ์์ค๊ฐ ์ฌ๋ฐ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ๋ก๋๋๋์ง ํ์ธํ์ธ์. ๋คํธ์ํฌ ํจ๋์ "Priority" ์ด์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด์ธ์. ํ๋ฆฌํ์น๋ ๋ฆฌ์์ค๋ ์ด๊ธฐ์ ๋ฎ์ ์ฐ์ ์์๋ฅผ ๊ฐ์ ธ์ผ ํฉ๋๋ค.
- ์บ์ฑ ์ ๋ต ๊ตฌํ: ๋ธ๋ผ์ฐ์ ์บ์ฑ(์บ์ ํค๋ ์ฌ์ฉ)์ ํ์ฉํ์ฌ ํ๋ฆฌํ์น๋ ๋ฆฌ์์ค๊ฐ ํ์ ๋ฐฉ๋ฌธ์ ์ํด ๋ธ๋ผ์ฐ์ ์บ์์ ์ ์ฅ๋๋๋ก ํ์ธ์.
- ์ฌ์ฉ์ ํ๋ ๊ณ ๋ ค: ์ฌ์ฉ์ ํ๋์ ๋ถ์ํ์ฌ ๊ฐ์ฅ ์์ฃผ ์ ๊ทผํ๋ ํ์ด์ง์ ๋ฆฌ์์ค๋ฅผ ํ์ ํ์ธ์. ์ด๋ฌํ ๋ฆฌ์์ค๋ฅผ ํ๋ฆฌํ์นํ์ฌ ์ฌ๋ฐฉ๋ฌธ์์ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ์ธ์.
- ๊ณผ๋ํ ํ๋ฆฌํ์นญ ํผํ๊ธฐ: ๋๋ฌด ๋ง์ ๋ฆฌ์์ค๋ฅผ ํ๋ฆฌํ์นญํ๋ฉด ๋์ญํญ์ ์๋ชจํ๊ณ ์ฑ๋ฅ์ ๋ถ์ ์ ์ธ ์ํฅ์ ์ค ์ ์์ต๋๋ค. ๊ฐ๊น์ด ๋ฏธ๋์ ํ์ํ ๊ฐ๋ฅ์ฑ์ด ์๋ ๋ฆฌ์์ค๋ง ํ๋ฆฌํ์นญํ๋ ๋ฐ ์ง์คํ์ธ์.
- ๋ค์ํ ๋ธ๋ผ์ฐ์ ๋ฐ ์ฅ์น์์ ํ ์คํธ: CSS ํ๋ฆฌํ์น ๊ตฌํ์ด ๋ค์ํ ๋ธ๋ผ์ฐ์ (ํฌ๋กฌ, ํ์ด์ดํญ์ค, ์ฌํ๋ฆฌ, ์ฃ์ง)์ ์ฅ์น(๋ฐ์คํฌํฑ, ๋ชจ๋ฐ์ผ, ํ๋ธ๋ฆฟ)์์ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํ์ธ์.
- ๋ค๋ฅธ ์ต์ ํ ๊ธฐ์ ๊ณผ ๊ฒฐํฉ: CSS ํ๋ฆฌํ์น๋ ์ฝ๋ ์ถ์, ์ด๋ฏธ์ง ์ต์ ํ, ์ง์ฐ ๋ก๋ฉ(lazy loading)๊ณผ ๊ฐ์ ๋ค๋ฅธ ์น์ฌ์ดํธ ์ต์ ํ ๊ธฐ์ ๊ณผ ๊ฒฐํฉํ ๋ ๊ฐ์ฅ ํจ๊ณผ์ ์ ๋๋ค.
์ผ๋ฐ์ ์ธ ํจ์ ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ
CSS ํ๋ฆฌํ์น๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ด์ง๋ง, ์ ์ฌ์ ์ธ ํจ์ ๊ณผ ์ด๋ฅผ ํผํ๋ ๋ฐฉ๋ฒ์ ์๋ ๊ฒ์ด ์ค์ํฉ๋๋ค:
- ์๋ชป๋ URL:
href์์ฑ์ URL์ด ์ฌ๋ฐ๋ฅธ์ง ๋ค์ ํ์ธํ์ธ์. ์คํ๋ ์๋ชป๋ ๊ฒฝ๋ก๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ ธ์ค์ง ๋ชปํ๊ฒ ํ ์ ์์ต๋๋ค. as์์ฑ ๋๋ฝ:as์์ฑ์ ํฌํจํ๋ ๊ฒ์ ์์ผ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฆฌ์์ค ์ ํ์ ์๋ชป ํด์ํ๊ณ ์๋ชป ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.- ๊ณผ๋ํ ํ๋ฆฌํ์นญ: ์์ ์ธ๊ธํ๋ฏ์ด, ๋๋ฌด ๋ง์ ๋ฆฌ์์ค๋ฅผ ํ๋ฆฌํ์นญํ๋ฉด ๋์ญํญ์ ์๋ชจํ๊ณ ์ฑ๋ฅ์ ๋ถ์ ์ ์ธ ์ํฅ์ ์ค ์ ์์ต๋๋ค. ๋ถ์ ๋ฐ์ดํฐ์ ์ฌ์ฉ์ ํ๋์ ๋ฐํ์ผ๋ก ํ๋ฆฌํ์นญ ์ ๋ต์ ์๋ฆฝํ์ธ์.
- ์บ์ ๋ฌดํจํ ๋ฌธ์ : CSS ํ์ผ์ ์ ๋ฐ์ดํธํ๋ ๊ฒฝ์ฐ, ๋ธ๋ผ์ฐ์ ๊ฐ ์ ๋ฐ์ดํธ๋ ํ์ผ์ ๋ค์ด๋ก๋ํ๋๋ก ๊ฐ์ ํ๊ธฐ ์ํด ์ ์ ํ ์บ์ ๋ฌดํจํ ์ ๋ต(์: ๋ฒ์ ๋ฒํธ ๋๋ ์บ์ ๋ฒ์คํ ๊ธฐ์ ์ฌ์ฉ)์ ๋ง๋ จํด์ผ ํฉ๋๋ค.
- ๋ชจ๋ฐ์ผ ์ฌ์ฉ์ ๋ฌด์: ์ ํ๋ ๋์ญํญ๊ณผ ๋ฐ์ดํฐ ์๊ธ์ ๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ฐ์ผ ์ฌ์ฉ์๋ฅผ ์ผ๋์ ๋์ธ์. ๋ชจ๋ฐ์ผ ์ฅ์น์์ ๋ถํ์ํ๊ฒ ํฐ ๋ฆฌ์์ค๋ฅผ ํ๋ฆฌํ์นญํ์ง ๋ง์ธ์. ์ฅ์น ํน์ฑ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ฆฌ์์ค๋ฅผ ์ ๊ณตํ๋ ์ ์ํ ๋ก๋ฉ ๊ธฐ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
๊ณ ๊ธ ๊ธฐ์ ๋ฐ ๊ณ ๋ ค ์ฌํญ
๊ณ ๊ธ ์ฌ์ฉ์๋ฅผ ์ํด ๋ช ๊ฐ์ง ์ถ๊ฐ ๊ธฐ์ ๋ฐ ๊ณ ๋ ค ์ฌํญ์ ์๊ฐํฉ๋๋ค:
1. ๋ฆฌ์์ค ํํธ: preload ๋ prefetch
preload์ prefetch์ ์ฐจ์ด์ ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค:
preload: ํ์ฌ ํ์ด์ง์ *ํ์์ ์ธ* ๋ฆฌ์์ค๋ฅผ ๋ค์ด๋ก๋ํ๋๋ก ๋ธ๋ผ์ฐ์ ์ ์ง์ํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ๋ค๋ฅธ ๋ฆฌ์์ค๋ณด๋ค preload ์์ฒญ์ ์ฐ์ ์์๋ฅผ ๋๊ฒ ์ค์ ํฉ๋๋ค. ํ์ด์ง์ ์ด๊ธฐ ๋ ๋๋ง์ ์ฆ์ ํ์ํ ๋ฆฌ์์ค(์: ํฐํธ, ์ค์ CSS)์preload๋ฅผ ์ฌ์ฉํ์ธ์.prefetch: ํฅํ ํ์์ ํ์ํ *๊ฐ๋ฅ์ฑ์ด ์๋* ๋ฆฌ์์ค๋ฅผ ๋ค์ด๋ก๋ํ๋๋ก ๋ธ๋ผ์ฐ์ ์ ์ง์ํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ๋ค๋ฅธ ๋ฆฌ์์ค๊ฐ ๋จผ์ ๋ก๋๋๋๋ก prefetch ์์ฒญ์ ๋ฎ์ ์ฐ์ ์์๋ก ๋ค์ด๋ก๋ํฉ๋๋ค. ํ์ ํ์ด์ง๋ ์ํธ์์ฉ์ ํ์ํ ๋ฆฌ์์ค์prefetch๋ฅผ ์ฌ์ฉํ์ธ์.
์์ (Preload):
<link rel="preload" href="/fonts/myfont.woff2" as="font" type="font/woff2" crossorigin>
2. DNS ํ๋ฆฌํ์นญ
DNS ํ๋ฆฌํ์นญ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋๋ฉ์ธ ์ด๋ฆ์ ํ์ธํ์ฌ DNS ์กฐํ์ ๊ด๋ จ๋ ์ง์ฐ ์๊ฐ์ ์ค์ผ ์ ์๊ฒ ํด์ค๋๋ค. ์ด๋ ์ฌ๋ฌ ๋๋ฉ์ธ(์: CDN, ์๋ํํฐ API)์ ๋ฆฌ์์ค์ ์์กดํ๋ ์น์ฌ์ดํธ์ ํนํ ์ ์ฉํ ์ ์์ต๋๋ค.
์์:
<link rel="dns-prefetch" href="//example.com">
์ด ํ๊ทธ๋ฅผ HTML ๋ฌธ์์ <head> ์น์
์ ๋ฐฐ์นํ์ธ์. `example.com`์ ํ๋ฆฌํ์นํ๋ ค๋ ๋๋ฉ์ธ์ผ๋ก ๋ฐ๊พธ์ธ์.
3. Preconnect
Preconnect๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ์ ์ ์๋ฒ์ ์ฐ๊ฒฐ์ ์ค์ ํ์ฌ ๋ฆฌ์์ค๊ฐ ์ค์ ๋ก ํ์ํ ๋ ์์ฒญ์ ์์ํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ค์ฌ์ค๋๋ค. ์ด๋ ๋ณด์ ์ฐ๊ฒฐ(HTTPS)์ด ํ์ํ ๋ฆฌ์์ค์ ์ ์ฉํ ์ ์์ต๋๋ค.
์์:
<link rel="preconnect" href="https://example.com">
Preconnect๋ ๋ ํฐ ์ฑ๋ฅ ํฅ์์ ์ํด DNS ํ๋ฆฌํ์นญ๊ณผ ๊ฒฐํฉํ ์๋ ์์ต๋๋ค:
<link rel="dns-prefetch" href="//example.com">
<link rel="preconnect" href="https://example.com" crossorigin>
4. CDN (์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ)
CDN์ ์ฌ์ฉํ๋ฉด CSS ํ์ผ ๋ฐ ๊ธฐํ ๋ฆฌ์์ค๋ฅผ ์ ์ธ๊ณ์ ์์นํ ์ฌ๋ฌ ์๋ฒ์ ๋ถ์ฐํ์ฌ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ด๋ ๋ฐ์ดํฐ๊ฐ ์ด๋ํด์ผ ํ๋ ๊ฑฐ๋ฆฌ๋ฅผ ์ค์ฌ ๋ค๋ฅธ ์ง๋ฆฌ์ ์ง์ญ์ ์ฌ์ฉ์์๊ฒ ๋ ๋น ๋ฅธ ๋ก๋ฉ ์๊ฐ์ ์ ๊ณตํฉ๋๋ค.
5. HTTP/2 ๋ฐ HTTP/3
HTTP/2 ๋ฐ HTTP/3์ HTTP/1.1์ ๋นํด ์ฌ๋ฌ ์ฑ๋ฅ ๊ฐ์ ์ ์ ๊ณตํ๋ ์ต์ ๋ฒ์ ์ HTTP ํ๋กํ ์ฝ์ ๋๋ค. ์ฌ๊ธฐ์๋ ๋ฉํฐํ๋ ์ฑ(๋จ์ผ ์ฐ๊ฒฐ์ ํตํด ์ฌ๋ฌ ์์ฒญ์ ๋ณด๋ผ ์ ์์)๊ณผ ํค๋ ์์ถ์ด ํฌํจ๋ฉ๋๋ค. ์๋ฒ๊ฐ HTTP/2 ๋๋ HTTP/3์ ์ง์ํ๋ ๊ฒฝ์ฐ CSS ํ๋ฆฌํ์น๋ ๋์ฑ ํจ๊ณผ์ ์ผ ๊ฒ์ ๋๋ค.
์ค์ ์ฌ๋ก ๋ฐ ์ผ์ด์ค ์คํฐ๋
CSS ํ๋ฆฌํ์น๊ฐ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๋ฐ ์ด๋ป๊ฒ ์ฌ์ฉ๋์๋์ง ์ค์ ์ฌ๋ก๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
- ์ด์ปค๋จธ์ค ์น์ฌ์ดํธ: ํ ์ด์ปค๋จธ์ค ์น์ฌ์ดํธ๋ ์ ํ ์นดํ ๊ณ ๋ฆฌ ํ์ด์ง์ CSS ํ๋ฆฌํ์น๋ฅผ ๊ตฌํํ์ต๋๋ค. ์ฌ์ฉ์๊ฐ ํํ์ด์ง๋ฅผ ๋๋ฌ๋ณด๋ ๋์ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ์นดํ ๊ณ ๋ฆฌ ํ์ด์ง์ CSS๊ฐ ํ๋ฆฌํ์น๋์์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ ํด๋น ์นดํ ๊ณ ๋ฆฌ ํ์ด์ง๋ก ์ด๋ํ ์ฌ์ฉ์์ ํ์ด์ง ๋ก๋ ์๊ฐ์ด 20% ๊ฐ์ํ์ต๋๋ค.
- ๋ด์ค ์น์ฌ์ดํธ: ํ ๋ด์ค ์น์ฌ์ดํธ๋ ๊ธฐ์ฌ ํ์ด์ง์ CSS ํ๋ฆฌํ์น๋ฅผ ๊ตฌํํ์ต๋๋ค. ์ฌ์ฉ์๊ฐ ๊ธฐ์ฌ๋ฅผ ์ฝ๋ ๋์ ๊ด๋ จ ๊ธฐ์ฌ์ CSS๊ฐ ํ๋ฆฌํ์น๋์์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ ์ธ์ ๋น ์ฝ๋ ๊ธฐ์ฌ ์๊ฐ 15% ์ฆ๊ฐํ์ต๋๋ค.
- ๋ธ๋ก๊ทธ: ํ ๋ธ๋ก๊ทธ๋ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ ํ์ด์ง์ CSS ํ๋ฆฌํ์น๋ฅผ ๊ตฌํํ์ต๋๋ค. ์ฌ์ฉ์๊ฐ ํํ์ด์ง๋ฅผ ๋๋ฌ๋ณด๋ ๋์ ์ต์ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ CSS๊ฐ ํ๋ฆฌํ์น๋์์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ ์ดํ๋ฅ ์ด 10% ๊ฐ์ํ์ต๋๋ค.
์ด๋ค์ CSS ํ๋ฆฌํ์น๋ฅผ ์ฌ์ฉํ์ฌ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ณ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํค๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ช ๊ฐ์ง ์์ ๋ถ๊ณผํฉ๋๋ค. ๊ตฌ์ฒด์ ์ธ ์ด์ ์ ์น์ฌ์ดํธ์ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ๊ฒ์ ๋๋ค.
ํ๋ฆฌํ์น ์ฑ๋ฅ ๋ถ์ ๋ฐ ์ต์ ํ ๋๊ตฌ
CSS ํ๋ฆฌํ์น ๊ตฌํ์ ๋ถ์ํ๊ณ ์ต์ ํํ๋ ๋ฐ ๋์์ด ๋๋ ๋ช ๊ฐ์ง ๋๊ตฌ๊ฐ ์์ต๋๋ค:
- ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ (Chrome DevTools, Firefox Developer Tools): ๋คํธ์ํฌ ํจ๋์ ์ฌ์ฉํ์ฌ ๋คํธ์ํฌ ์์ฒญ์ ๋ชจ๋ํฐ๋งํ๊ณ , ๋ณ๋ชฉ ํ์์ ์๋ณํ๋ฉฐ, ํ๋ฆฌํ์น๋ ๋ฆฌ์์ค๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋ก๋๋๋์ง ํ์ธํ์ธ์. "Priority" ์ด๊ณผ ์์ฒญ ํ์ด๋ฐ์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด์ธ์.
- WebPageTest: ์น์ฌ์ดํธ ์ฑ๋ฅ์ ํ ์คํธํ๋ ๋ฐ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์จ๋ผ์ธ ๋๊ตฌ์ ๋๋ค. WebPageTest๋ CSS ํ๋ฆฌํ์น์ ๋ํ ํต์ฐฐ๋ ฅ์ ํฌํจํ์ฌ ์์ธํ ์ฑ๋ฅ ์งํ์ ๊ถ์ฅ ์ฌํญ์ ์ ๊ณตํฉ๋๋ค.
- Lighthouse (Chrome DevTools): Lighthouse๋ ์น์ฌ์ดํธ ์ฑ๋ฅ, ์ ๊ทผ์ฑ ๋ฐ SEO๋ฅผ ๊ฐ์ฌํ๋ ์๋ํ๋ ๋๊ตฌ์ ๋๋ค. CSS ํ๋ฆฌํ์น๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ์ ์์ ํฌํจํ์ฌ ๋ก๋ฉ ์๋๋ฅผ ๊ฐ์ ํ ๊ธฐํ๋ฅผ ์๋ณํ ์ ์์ต๋๋ค.
- Google PageSpeed Insights: ์น์ฌ์ดํธ ์ฑ๋ฅ์ ๋ถ์ํ๊ณ ์ต์ ํ๋ฅผ ์ํ ๊ถ์ฅ ์ฌํญ์ ์ ๊ณตํ๋ ๋ ๋ค๋ฅธ ์จ๋ผ์ธ ๋๊ตฌ์ ๋๋ค.
CSS ํ๋ฆฌํ์น์ ์น ์ฑ๋ฅ์ ๋ฏธ๋
CSS ํ๋ฆฌํ์น๋ ์น์ฌ์ดํธ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ณ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํค๋ ๋ฐ ์ ์ฉํ ๊ธฐ์ ์ ๋๋ค. ์น์ด ๊ณ์ ๋ฐ์ ํ๊ณ ์ฌ์ฉ์๋ค์ด ๋ ๋น ๋ฅด๊ณ ๋ฐ์์ด ๋น ๋ฅธ ์น์ฌ์ดํธ๋ฅผ ์๊ตฌํจ์ ๋ฐ๋ผ ํ๋ฆฌํ์นญ์ ๋์ฑ ์ค์ํด์ง ๊ฒ์ ๋๋ค.
HTTP/3, QUIC ๋ฐ ๊ณ ๊ธ ์บ์ฑ ์ ๋ต๊ณผ ๊ฐ์ ๊ธฐ์ ์ ๋ฑ์ฅ์ผ๋ก ํ๋ฆฌํ์นญ์ ์ํํ๊ณ ๋งค๋ ฅ์ ์ธ ์น ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํ ๊ฒ์ ๋๋ค. ์ต์ ๋ชจ๋ฒ ์ฌ๋ก์ ๊ธฐ์ ์ ๋ํ ์ ๋ณด๋ฅผ ๊ณ์ ์ ํจ์ผ๋ก์จ ํ๋ฆฌํ์นญ์ ํ์ฉํ์ฌ ์น์ฌ์ดํธ์ ์๋์ ์ฑ๋ฅ์ ์ต์ ํํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
CSS ํ๋ฆฌํ์น๋ ์น์ฌ์ดํธ์ ๋ก๋ฉ ์๋๋ฅผ ํฌ๊ฒ ํฅ์์ํค๊ณ , ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ๋ฉฐ, SEO ์ฑ๋ฅ์ ๋์ผ ์ ์๋ ๊ฐ๋ ฅํ ๊ธฐ์ ์
๋๋ค. ์ด ๊ฐ์ด๋์์ ์ค๋ช
ํ ์ด์ , ๊ตฌํ ์ ๋ต ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ดํดํจ์ผ๋ก์จ CSS ํ๋ฆฌํ์น๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ์ฌ ์น์ฌ์ดํธ์ ์๋์ ์ฑ๊ณต์ ์ต์ ํํ ์ ์์ต๋๋ค. ์ค์ ๋ฆฌ์์ค์ ์ฐ์ ์์๋ฅผ ์ ํ๊ณ , as ์์ฑ์ ์ฌ์ฉํ๋ฉฐ, ๋คํธ์ํฌ ์ฑ๋ฅ์ ๋ชจ๋ํฐ๋งํ๊ณ , ์ต๋ ํจ๊ณผ๋ฅผ ์ํด ํ๋ฆฌํ์นญ์ ๋ค๋ฅธ ์ต์ ํ ๊ธฐ์ ๊ณผ ๊ฒฐํฉํ๋ ๊ฒ์ ์์ง ๋ง์ธ์. ์ฌ์ฉ์์๊ฒ ๋น ๋ฅด๊ณ ์ฆ๊ฑฐ์ด ์น ๊ฒฝํ์ ์ ๊ณตํ๊ธฐ ์ํ ์ง์์ ์ธ ๋
ธ๋ ฅ์ ์ผํ์ผ๋ก ํ๋ฆฌํ์นญ์ ์ฑํํ์ธ์.