๋ฐ์ด๋ธ ๊ด๊ณ ์ง์ฐ ๋ก๋ฉ SEO ์ต์ ํ ์ ๋ต: LCP์ CLS๋ฅผ ์ก๊ณ ํธ๋ํฝ๊ณผ ์์ต์ ๋์์ ๋์ด๋ ํต์ฌ ๊ธฐ์
๋ฐ์ด๋ธ ๊ด๊ณ ๋ก๋ฉ ๋ฐฉ์๋ง ๋ฐ๊ฟ๋ SEO ์ ์๊ฐ ํฌ๊ฒ ์์นํฉ๋๋ค. ์ง์ฐ ๋ก๋ฉ์ผ๋ก ์ด๊ธฐ ์๋๋ฅผ ๊ฐ์ ํ๊ณ ํธ๋ํฝ์์ต์ ๋์์ ์ฌ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ์๋ดํฉ๋๋ค.
๋ฐ์ด๋ธ ๊ด๊ณ ๋ ๋ธ๋ก๊ทธ ์์ตํ์ ํต์ฌ์ด์ง๋ง, ์ฆ์ ๋ก๋ฉ ๋ฐฉ์์ ๊ฒ์์์ง ์ต์ ํ(SEO)์์ ๊ฐ์ฅ ์ค์ํ Core Web Vitals (CWV) ์งํ๋ฅผ ์ง์ ์ ์ผ๋ก ์ ํ์ํต๋๋ค. ์๋ชป ์ ์ฉ๋ ๊ด๊ณ ๋ ํธ๋ํฝ, ์ฒด๋ฅ ์๊ฐ, ๊ฒ์ ์์๋ฅผ ๋ชจ๋ ๋จ์ด๋จ๋ฆฌ๋ ์น๋ช ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ๋ณ์ต๋๋ค.
๋ณธ ๊ฐ์ด๋์์๋ ๋ธ๋ก๊ทธ ์ด์์ ๊ด์ ์์ ๋ฐ์ด๋ธ ๊ด๊ณ ์ ๊ตฌ์กฐ์ ๋ฌธ์ ์ ์ ๋ถ์ํ๊ณ , LCP(Largest Contentful Paint)์ CLS(Cumulative Layout Shift) ์ฑ๋ฅ์ ๋จ์ด๋จ๋ฆฌ์ง ์์ผ๋ฉด์ ๊ด๊ณ ์์ต์ ํจ์จํํ ์ ์๋ ์ฌ์ฉ์ ์ธํฐ๋์ ๊ธฐ๋ฐ ์ง์ฐ ๋ก๋ฉ(Lazy Loading) ๋ฐฉ์์ ๋ค๋ฃน๋๋ค.
1. ๋ธ๋ก๊ทธ ์ฑ๋ฅ์ ํ๊ดดํ๋ ์ฆ์ ๋ก๋ฉ ๋ฐ์ด๋ธ ๊ด๊ณ ์ ๋ฌธ์ ์
๋๋ถ๋ถ์ ์ด์์๋ ํ์ด์ง ๋ก๋ฉ ์งํ ๋ฐ์ด๋ธ ๊ด๊ณ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐ๋ก ์ฝ์ ํ์ง๋ง, ์ด ๋ฐฉ์์ SEO์ ํต์ฌ ์งํ์ธ LCP, FCP(First Contentful Paint), INP(Interaction to Next Paint)๋ฅผ ์ง์ ์ ์ผ๋ก ๋ง๊ฐ๋จ๋ฆฝ๋๋ค. ํนํ ๋ฐ์ด๋ธ ๊ด๊ณ ๋ ๋ค์์ RTB(Real-Time Bidding) ํํธ๋์ ์ฐ๋๋์ด ์ด๊ธฐ ๋ก๋ฉ ์ ์์ญ ๊ฐ์ ์๋ํํฐ ๋ฆฌ์์ค๋ฅผ ๋์์ ํธ์ถํฉ๋๋ค. ์ด๋ ๋ฉ์ธ ์ค๋ ๋(Main Thread)๊ฐ ๊ณผ๋ถํ๋์ด ํ๋ฉด ๋ ๋๋ง์ด ์ง์ฐ๋๋ฉฐ, ์ด๋ PageSpeed Insights ์ ์ ํ๋ฝ์ผ๋ก ์ง๊ฒฐ๋ฉ๋๋ค.

์ด ๋ฌธ์ ๋ ๊ณง๋ฐ๋ก ๊ฒ์ ์์ ํ๋ฝ์ผ๋ก ์ด์ด์ง ์ ์์ผ๋ฉฐ, ์ค์ ๋ก PageSpeed Insights์์ ๋ฐ์ด๋ธ ๊ด๊ณ ๋ ๋ ๋๋ง ์ฐจ๋จ ๋ฆฌ์์ค(Render-Blocking Resource) ๋ฐ ์๋ํํฐ ์คํฌ๋ฆฝํธ๋ก ์ธํ ์ง์ฐ ํญ๋ชฉ์์ ๋์ ๋น์ค์ ๊ฐ์ ์์ธ์ด ๋ฉ๋๋ค. ์ฆ, ์์ต์ ์ฌ๋ฆฌ๋ ค๋ ๊ด๊ณ ๊ฐ ์ญ์ค์ ์ผ๋ก ๋ธ๋ก๊ทธ ๋ฐฉ๋ฌธ์ ์๋ฅผ ๊ฐ์์ํค๋ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํฉ๋๋ค.
1.1 ์ด๊ธฐ ๋ก๋ฉ ์๋ ์ ํ์ SEO ์ ํ (LCP/FCP)
๋ฐ์ด๋ธ ๊ด๊ณ ๋ ์คํฌ๋ฆฝํธ ์์ฒด๊ฐ ๋ฌด๊ฒ๊ณ , ๊ด๊ณ ์์ฒญ์ ์ํด ๋ค์์ ๋คํธ์ํฌ ์์ฒญ์ ๋์์ ์ฒ๋ฆฌํฉ๋๋ค. ์ด ๊ณผ์ ์ ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ํ์ดํ๋ผ์ธ์ ์ง์ ์ ์ธ ๋ถ๋ด์ ์ฃผ์ด ์ค์ํ ์์์ด ์ฐจ๋จ(Blocking)๋๋ฉฐ, ๊ฐ์ฅ ํฐ ์ฝํ ์ธ ์์(LCP)๊ฐ ์ ๋ ๋ก๋๋์ง ๋ชปํ๊ฒ ํฉ๋๋ค.
- ์ด๊ธฐ White Screen(๋ฐฑ์ง ํ๋ฉด) ๋ ธ์ถ ์๊ฐ ์ฆ๊ฐ
- ์ฌ์ฉ์ ์ํธ์์ฉ ์ง์ฐ INP(Interaction to Next Paint) ์ ํ
- ์ฝํ ์ธ ๋ฐ๋ฆผ ํ์ CLS(Cumulative Layout Shift) ๋ฐ์ ๊ฐ๋ฅ์ฑ ์ฆ๊ฐ
๊ตฌ๊ธ(Google)์ CWV(Core Web Vitals)๋ฅผ ์ค์ํ ์์ ์์๋ก ์ฌ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์, ๋ฐ์ด๋ธ ๊ด๊ณ ๋ก ์ธํ ์ด๊ธฐ ์ฑ๋ฅ ์ ํ๋ ๊ฒ์ ์์ ํ๋ฝ๊ณผ ์ง๊ฒฐ๋ฉ๋๋ค. ํนํ ๋ชจ๋ฐ์ผ ํ์ด์ง์์ ๋ฌธ์ ๊ฐ ์ฌ๊ฐํด์ง๋๋ฐ, ๋ชจ๋ฐ์ผ ์ฑ๋ฅ ์ต์ ํ๋ ๋ฐฉ๋ฌธ์ 80% ์ด์์ด ๋ชจ๋ฐ์ผ๋ก ์ ์ ๋๋ ๋ธ๋ก๊ทธ์๊ฒ๋ ์์กด ๋ฌธ์ ์ ๋๋ค.

1.2 ์ฌ์ฉ์ ๊ฒฝํ(UX) ์ ํด ๋ฐ ์ฒด๋ฅ ์๊ฐ ๊ฐ์
๋ฐ์ด๋ธ ๊ด๊ณ ๋ฅผ ์ฆ์ ์คํํ๋ ๋ฐฉ์์ ์ฌ์ฉ์ ํ๋์ ๊ณ ๋ คํ์ง ์์ ๊ตฌ์ ๋ฐฉ์์ ๋๋ค.
- ํ์ด์ง ์คํฌ๋กค ๋ฐ ํฐ์น ๋ฐ์ ์ง์ฐ
- ํธ๋ํฐ ๋ฐ์ด ์ฆ๊ฐ ๋ฐ ๋ฐฐํฐ๋ฆฌ ์๋ชจ ๊ฐ์
- ๊ด๊ณ ๋ก๋ฉ ์ ํ๋ฉด ์์๊ฐ ํ๋ CLS ๋ฌธ์ ์ฌํ
- ๋ณธ๋ฌธ ์ฝํ ์ธ ์ง์ค๋ ์ ํ ๋ฐ ์ฒด๋ฅ ์๊ฐ ๊ฐ์๋ก ์ธํ SEO ํ๋ฝ
์ต์ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉ์ ๋ง์กฑ๋๋ฅผ ์ค์ํ๋ฏ๋ก, ๊ด๊ณ ํ๋๊ฐ ์ ์ฒด ๋ธ๋ก๊ทธ๋ฅผ ์ ํ์ง์ฒ๋ผ ๋ณด์ด๊ฒ ๋ง๋ค์ด ๊ฒ์ ์์กด ๋ธ๋ก๊ทธ ์ด์์ ์น๋ช ์ ์ ๋๋ค.
2. ๋ฐ์ด๋ธ ๊ด๊ณ ๋ฅผ ์ด๋ฆฌ๊ณ SEO๋ฅผ ์งํค๋ ์ ์ผํ ํด๋ฒ: ์ง์ฐ ๋ก๋ฉ ์ ๋ต
๋ฐ์ด๋ธ ๊ด๊ณ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฐ์ฅ ๊ฐ๋ ฅํ ๋์์ Lazy Loading(์ง์ฐ ๋ก๋ฉ) ์ ๋ต์ ๋๋ค. ์ง์ฐ ๋ก๋ฉ์ด๋ ๊ด๊ณ ์คํฌ๋ฆฝํธ๋ฅผ ํ์ด์ง ์ฒซ ๋ก๋ฉ ์ ์คํํ์ง ์๊ณ , ์ฌ์ฉ์์ ํน์ ํ๋(์คํฌ๋กค, ํฐ์น, ๋ง์ฐ์ค ์ด๋ ๋ฑ ์ธํฐ๋์ )์ด ๊ฐ์ง๋ ๋ ๋์ ์ผ๋ก ๋ก๋ฉํ๋ ๋ฐฉ์์ ๋๋ค.
์ด๋ ์ด๊ธฐ ํ์ด์ง ์ฑ๋ฅ ์ ์ง์ ๊ด๊ณ ์์ต ํ๋ณด๋ผ๋ ๋ ๋ง๋ฆฌ ํ ๋ผ๋ฅผ ๋์์ ์ก๋ ์ต์ ํ ์ ๋ต์ ๋๋ค.
2.1 ์ฌ์ฉ์ ์ธํฐ๋์ ๊ธฐ๋ฐ ๊ด๊ณ ๋ ธ์ถ ๋ฐฉ์์ ๊ตฌํ ํ๋ฆ
์ต์ ํ๋ ์ง์ฐ ๋ก๋ฉ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ ํ๋ฆ์ ๊ฐ์ต๋๋ค.
- ์ด๊ธฐ ๋ก๋ฉ: ๊ด๊ณ ๊ฐ ๋ค์ด๊ฐ DIV(Placeholder)๋ง ๋ ๋๋งํ๊ณ ๊ด๊ณ ์คํฌ๋ฆฝํธ๋ ์กด์ฌํ์ง ์์.
- ์ด๋ฒคํธ ๊ฐ์ง: ์ฌ์ฉ์๊ฐ ์ฒ์์ผ๋ก ์คํฌ๋กค, ํด๋ฆญ ๋๋ ๋ง์ฐ์ค ์ด๋ ์ด๋ฒคํธ ์คํ.
- ์คํฌ๋ฆฝํธ ์ฝ์ : JavaScript๊ฐ ๋ฐ์ด๋ธ ๊ด๊ณ ์คํฌ๋ฆฝํธ๋ฅผ head ๋๋ body์ ๋์ ์ผ๋ก ์ฝ์ .
- ๊ด๊ณ ๋ ธ์ถ: ๊ด๊ณ ๊ฐ ์ฆ์ ๋ ธ์ถ๋๋ฉฐ, ์ค์ ๋ก๋ฉ์ ์ฌ์ฉ์ ์ธํฐ๋์ ์ดํ ๋ฐ์ํ์ฌ ์ด๊ธฐ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น์ง ์์.
์ด ๋ฐฉ์์ ๊ด๊ณ ๊ฐ ํ์ด์ง ์ด๊ธฐ ๋ก๋ฉ ์ฑ๋ฅ์ ๋ฐฉํดํ๋ ๊ฒ์ ์๋ฒฝํ๊ฒ ๋ง์์ฃผ๋ฏ๋ก, LCP, FCP, INP ๋ฑ ํต์ฌ SEO ์งํ๊ฐ ๊นจ์ง์ง ์์ต๋๋ค.
2.2 ์ค์ ๊ตฌํ์ ์ํ ํต์ฌ ์ฝ๋ ๋ถ์ ๊ฐ์
์ฌ์ฉ์ ์ต์ด ์ธํฐ๋์ ๊ธฐ๋ฐ ์คํ์ IntersectionObserver ๋ฐฉ์๋ณด๋ค ๊ด๊ณ ์คํ ํ์ด๋ฐ์ ๋ฏธ์ธํ๊ฒ ์ ์ดํ ์ ์์ด ์์ต๋ฅ ๋ณ๋์ ์ต์ํํฉ๋๋ค.
| ์์ | ๋ชฉ์ ๋ฐ ๊ธฐ๋ฅ |
|---|---|
| `scriptLoaded` ํ๋๊ทธ | ๊ด๊ณ ์คํฌ๋ฆฝํธ๊ฐ ์ค์๋ก ์ค๋ณต ์คํ๋๋ ๊ฒ์ ์์ฒ์ ์ผ๋ก ์ฐจ๋จํ์ฌ ๋ถํ๋ฅผ ์ ์ด. |
| ์ด๋ฒคํธ ๋ฆฌ์ค๋ ์ ๊ฑฐ | ์ต์ด ์คํ(๊ด๊ณ ๋ก๋ฉ) ์ดํ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ฆ์ ์ ๊ฑฐํ์ฌ CPU ์ฌ์ฉ๋์ ์ต์ํํ๊ณ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ๋ฐฉ์ง. |
| `handleFirstInteraction()` | ์ฌ์ฉ์ ์ต์ด ์ด๋ฒคํธ ๋ฐ์ ์ ๋ฐ์ด๋ธ ๊ด๊ณ ์คํฌ๋ฆฝํธ๋ฅผ ๋์ ์ผ๋ก ๋ก๋ฉํ๋ ํต์ฌ ํจ์. |
์ด ์ต์ ํ ์ ๋ต์ ์ด๊ธฐ ์ฑ๋ฅ ๋ถํ๋ฅผ 80% ์ด์ ์ฐจ๋จํ๊ณ , SEO ์ ์์ ๊ด๊ณ ์์ต์ ๋์์ ์งํค๋ ๊ฐ์ฅ ํ์ค์ ์ด๊ณ ๊ฐ๋ ฅํ ํด๊ฒฐ์ฑ ์ ๋๋ค.
์ ์ฉ ์์ ์ฝ๋
document.addEventListener("DOMContentLoaded", function() {
const dableWidgetId = 'dablewidget_6XgdZYVo';
let scriptLoaded = false;
const interactionEvents = ['scroll', 'mousemove', 'touchstart'];
const handleFirstInteraction = function() {
if (!scriptLoaded) {
loadDableScriptAndRender();
scriptLoaded = true;
interactionEvents.forEach(eventType = {
document.removeEventListener(eventType, handleFirstInteraction);
});
}
};
function loadDableScriptAndRender() {
(function(d, a, b, l, e, r) {
if (d[b] && d[b].q) return;
d[b] = function() { (d[b].q = d[b].q || []).push(arguments) };
e = a.createElement(l);
e.async = 1;
e.charset = 'utf-8';
e.src = '//static.dable.io/dist/plugin.min.js';
r = a.getElementsByTagName(l)[0];
r.parentNode.insertBefore(e, r);
})(window, document, 'dable', 'script');
executeDableRender();
}
function executeDableRender() {
dable('setService', 'everydayhub.tistory.com');
dable('sendLogOnce');
dable('renderWidget', dableWidgetId);
}
interactionEvents.forEach(eventType = {
document.addEventListener(eventType, handleFirstInteraction);
});
});
3. PageSpeed CWV ๊ถ์ฅ์ฌํญ๊ณผ SEO ๋์ ์ ๋ต
๋ธ๋ก๊ทธ ์ด์์์๊ฒ ์ฌ์ดํธ ์ฑ๋ฅ์ ํธ๋ํฝ, ์ฒด๋ฅ ์๊ฐ, ๊ด๊ณ ์์ต์ ๊ฒฐ์ ํ๋ ํต์ฌ ๋ณ์์ ๋๋ค. ํนํ ๊ตฌ๊ธ(Google)์ Core Web Vitals(CWV)๋ฅผ ์ค์ฌ์ผ๋ก ํ์ด์ง ํ๊ฐ ๊ฐ์ค์น๋ฅผ ๊ฐํํ๊ณ ์์ต๋๋ค.
์ด๋ฌํ ํ๋ฆ์์ ๊ฐ์ฅ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ์์ ์ค ํ๋๊ฐ ๋ฐ๋ก ๋ฐ์ด๋ธ ๊ด๊ณ ์ ๊ฐ์ ์๋ ํํฐ(3rd-party) ์คํฌ๋ฆฝํธ์ด๋ฉฐ, ์ด๋ฅผ ์ง์ฐ ๋ก๋ฉ์ผ๋ก ์ ์ดํ๋ ๊ฒ์ด SEO ๊ฒฝ์๋ ฅ์ ์ข์ฐํฉ๋๋ค.
PageSpeed Insights ๋๋ Lighthouse ์ง๋จ ์ ๋๋ถ๋ถ์ ๋ธ๋ก๊ทธ์์ ๊ณตํต์ ์ผ๋ก ๋ค์ ํญ๋ชฉ์์ ์ฑ๋ฅ ์ ํ๋ฅผ ๋ฐ๊ฒฌํ๊ฒ ๋ฉ๋๋ค.
- ๋ฉ์ธ ์ค๋ ๋ ์์ ์๊ฐ ๊ณผ๋ค: ๋ฐ์ด๋ธ ์คํฌ๋ฆฝํธ ์คํ ๋ฐ ํ์ฑ.
- ๋ ๋๋ง ์ฐจ๋จ ๋ฆฌ์์ค ์กด์ฌ: ๊ด๊ณ ๋ก๋ฉ์ด ๋ค๋ฅธ ์ค์ํ ์์ ๋ก๋ฉ์ ๋ง์.
- LCP ์์ ๋ก๋ฉ ์ง์ฐ: ๋ฉ์ธ ์ฝํ ์ธ ๋ณด๋ค ๊ด๊ณ ์ฒ๋ฆฌ๋ก ์ธํด LCP ์ง์ฐ.
- CLS(๋ ์ด์์ ๋ฐ๋ฆผ) ์ฆ๊ฐ: ๊ด๊ณ ์์ญ์ด ๊ฐ์๊ธฐ ๋ํ๋ ๋ณธ๋ฌธ ์ฝํ ์ธ ๋ฅผ ๋ฐ์ด๋.
์ง์ฐ ๋ก๋ฉ(Lazy Loading) ๋ฐฉ์์ ๊ตฌ๊ธ(Google)์ด ์ค์ํ๋ค๊ณ ํ๋จํ๋ ์ฑ๋ฅ ์งํ๋ค์ ์ง์ผ๋ด๋ฉด์๋ ๊ด๊ณ ์์ต ๊ตฌ์กฐ๋ฅผ ์ ์งํ๋ ์ ๊ตํ ๊ท ํ์ ๋ง์ถ๋ ํ์ ๋ฐฉ๋ฒ์ ๋๋ค.
4. LCP ์ต์ ํ๋ฅผ ์ํ ๋ฐ์ด๋ธ ๊ด๊ณ ์ง์ฐ ๋ก๋ฉ์ ํจ๊ณผ
CWV ์งํ ์ค LCP(Largest Contentful Paint)๋ ํ์ด์ง ์์์ ๊ฐ์ฅ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๋ ์์์ ๋๋ค. ์ด๋ ํ๋ฉด์์ ๊ฐ์ฅ ํฐ ์ฝํ ์ธ (์ด๋ฏธ์ง, ํ ์คํธ ๋ธ๋ก ๋ฑ)๊ฐ ์ผ๋ง๋ ๋นจ๋ฆฌ ๋ ๋๋ง๋๋์ง๋ฅผ ์ธก์ ํฉ๋๋ค.
์ฆ์ ๋ก๋ฉ ๋ฐฉ์์ ๋ฐ์ด๋ธ ๊ด๊ณ ๋ ๋ค์๊ณผ ๊ฐ์ ๋จ๊ณ๋ก LCP ๋ ๋๋ง์ ์ง์ ์ ์ผ๋ก ๋ฐฉํดํฉ๋๋ค.
- ๋ฐ์ด๋ธ ์คํฌ๋ฆฝํธ ์คํ์ด ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ ์
- ๋ฉ์ธ ์ค๋ ๋ ์ ์ ๋ก ์ธํด LCP ์์์ธ ์ด๋ฏธ์ง, ํฐํธ, CSS ์์ฒญ ์ฒ๋ฆฌ๊ฐ ์ง์ฐ
- ํ๋ฉด ์ฒซ ๋ ๋๋ง ์ง์ฐ์ผ๋ก LCP ์ ํ ๋ฐ SEO ํ๋ฝ
โ ์ฌ์ฉ์ ์ํธ์์ฉ ์ดํ์๋ง ๋ฐ์ด๋ธ ๊ด๊ณ ๋ก๋ฉ
์ง์ฐ ๋ก๋ฉ์ ์คํฌ๋กค, ํฐ์น, ๋ง์ฐ์ค ์์ง์ ์ค ํ๋๋ผ๋ ๋ฐ์ํด์ผ ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ด๊ธฐ ๋ ๋๋ง์ ๊ด๊ณ ์ ์ํฅ์ 100% ๋ฐ์ง ์๊ณ ๋น ๋ฅด๊ฒ ์งํ๋ฉ๋๋ค. ์ด๋ ์ด๋ฏธ์ง ์ต์ ํ๋ณด๋ค ๋ ๊ฐ๋ ฅํ๊ณ ์ง์ ์ ์ธ ์ฑ๋ฅ ํฅ์ ํจ๊ณผ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.

5. CLS(๋ ์ด์์ ๋ฐ๋ฆผ) ์ต์ํ ์ ๋ต
CLS(Cumulative Layout Shift)๋ ํ์ด์ง๊ฐ ๋ก๋ฉ๋๋ ๋์ ์ฝํ ์ธ ๊ฐ ์๊ธฐ์น ์๊ฒ ํ๊ฑฐ๋ ๋ฐ๋ฆฌ๋ ํ์์ผ๋ก, ์ฆ์ ๋ก๋ฉ ๋ฐฉ์์ ๋ฐ์ด๋ธ ๊ด๊ณ ๋ CLS์ ๋ํ์ ์ธ ์์ธ์ ๋๋ค.
ํนํ ๋ค์ ์ํฉ์์ CLS๊ฐ ํฌ๊ฒ ์ฆ๊ฐํฉ๋๋ค.
- ๊ด๊ณ ๋ก๋ฉ์ด ๋ฆ๊ฒ ๋ค์ด์ค๋ฉด์ ๋ณธ๋ฌธ์ด ์๋๋ก ๋ฐ๋ฆฌ๋ ๊ฒฝ์ฐ (๊ฐ์ฅ ํํจ)
- ๊ด๊ณ ์์ ฏ์ ๋์ด๊ฐ ๋์ ์ผ๋ก ๋ณํ ๋
- ๋ฐ์ด๋ธ ๋ด๋ถ ์ปดํฌ๋ํธ๊ฐ ์์ฐจ์ ์ผ๋ก ๋ ๋๋ง๋๋ฉฐ ๋ ์ด์์์ ํ๋๋ ๊ฒฝ์ฐ
์ง์ฐ ๋ก๋ฉ ์ ๋ต์ ์ด ๋ฌธ์ ๋ฅผ ๊ทผ๋ณธ์ ์ผ๋ก ํด๊ฒฐํ ์ ์์ต๋๋ค.
โ ๊ด๊ณ DIV(placeholder)๋ฅผ ๋ฏธ๋ฆฌ ๊ณ ์ ํด๋๋ ๋ฐฉ์
์ง์ฐ ๋ก๋ฉ ์์๋ ๊ด๊ณ ๊ฐ ๋ค์ด์ฌ ์๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ๊ณ ์ ๋ ๋์ด(Placeholder)๋ก ํ๋ณดํด๋๋ฉด CLS๋ ๊ฑฐ์ 0์ ์๋ ดํ๊ฒ ๋ฉ๋๋ค.
div id="dable_space" style="height: 280px; min-height: 250px; background: #f9f9f9;"/div
์์ฒ๋ผ ๊ด๊ณ ๊ฐ ๋ค์ด๊ฐ ๊ณต๊ฐ์ ๋ฏธ๋ฆฌ ํ๋ณดํด๋๋ฉด, ์คํฌ๋ฆฝํธ ๋ก๋ฉ ์์ ๊ณผ ์๊ด์์ด ๋ ์ด์์์ด ํ๋ค๋ฆฌ์ง ์์ต๋๋ค. ํนํ ๋ชจ๋ฐ์ผ ํ๊ฒฝ์์๋ ์ด ๋ฐฉ์์ด ํ์์ ์ ๋๋ค.
6. INP(์ธํฐ๋์ ์๋ต์ฑ)๊ณผ ๋ฐ์ด๋ธ ๊ด๊ณ ๋ก๋ฉ ๋ถ๋ฆฌ
INP(Interaction to Next Paint)๋ ์ฌ์ฉ์์ ์ ๋ ฅ(ํด๋ฆญ, ์คํฌ๋กค ๋ฑ)์ ๋ํ ํ์ด์ง์ ์๋ต์ฑ์ ์ธก์ ํ๋ ์๋ก์ด CWV ์งํ์ ๋๋ค. ์ฆ์ ๋ก๋ฉ ๋ฐฉ์์ ๋ฐ์ด๋ธ ๊ด๊ณ ๋ ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ ์ ํ์ฌ ๋ค์ ๋ฌธ์ ๋ฅผ ์ ๋ฐํฉ๋๋ค.
- ์คํฌ๋กค ๋๊น (Jank)
- ํ๋ฉด ์ ํ ๋ฐ ํด๋ฆญ ์ง์ฐ
- ์ ๋ฐ์ ์ธ ์์คํ ๋ ๋ฐ์
โ ํด๊ฒฐ๋ฒ: ๋ก๋ฉ ํ์ด๋ฐ ๋ถ๋ฆฌ
๊ด๊ณ ์คํฌ๋ฆฝํธ๊ฐ ๋ก๋ฉ๋๋ ํ์ด๋ฐ๊ณผ ์ฌ์ฉ์ ์ต์ด ์ ๋ ฅ ํ์ด๋ฐ์ ๋ถ๋ฆฌํด์ผ ํฉ๋๋ค.
- ์ฌ์ฉ์๊ฐ ํ์ด์ง์ ์ง์ (๋น ๋ฅธ ์ด๊ธฐ ๋ ๋๋ง)
- ์ฌ์ฉ์ ์ ๋ ฅ ๋ฐ์ (์คํฌ๋กค/ํด๋ฆญ)
- ๊ทธ ์ดํ ๋ฐ์ด๋ธ ๊ด๊ณ ๋ก๋ฉ ์์
์ด๋ ๊ฒ ๋๋ฉด ์ด๊ธฐ ์คํฌ๋กค, ํด๋ฆญ, ํ๋ฉด ์ด๋์ ๊ด๊ณ ๋ถํ์ ๊ฒน์น์ง ์๊ฒ ๋ฉ๋๋ค. ๊ทธ ๊ฒฐ๊ณผ INP๋ ์์ฐ์ค๋ฝ๊ฒ ๊ฐ์ ๋๊ณ , Google์ ์ฑ๋ฅ ํ๊ฐ ์ ์๋ ํจ๊ป ํฅ์๋ฉ๋๋ค.
7. PageSpeed์์ Third-party code ๊ฒฝ๊ณ ๋์ ๋ฐฉ๋ฒ
PageSpeed Insights์๋ ํญ์ ๋ค์๊ณผ ๊ฐ์ ์๋ ํํฐ ๊ฒฝ๊ณ ๊ฐ ํ์๋ ์ ์์ต๋๋ค.
- Reduce the impact of third-party code
- Remove unused JavaScript
- Minimize main-thread work
์ด ๊ฒฝ๊ณ ๋ ๋๋ถ๋ถ ๋ฐ์ด๋ธ ๊ด๊ณ ์คํฌ๋ฆฝํธ๊ฐ ๋ง๋๋ ๋ถํ ๋๋ฌธ์ ๋ฐ์ํฉ๋๋ค. ํ์ง๋ง ์ด ๊ฒฝ๊ณ ๋ค์ ์์ ํ ์ ๊ฑฐํ ํ์๋ ์์ต๋๋ค.
์ค์ํ ํฌ์ธํธ: ํต์ฌ ์งํ ๋ฐฉ์ด์ ์ง์ค
PageSpeed์ 3rd-party ๊ฒฝ๊ณ ๋ SEO ์์์ ์ง์ ์ ์ํฅ์ ์ฃผ์ง ์์ผ๋ฉฐ ์ต์ ํ ๊ฐ๋ฅ ์์ญ์ผ๋ก๋ง ์ธ์ํฉ๋๋ค.
๋ฐ๋ผ์ ์ด์์๋ ๋ค์ ๋ ํญ๋ชฉ๋ง ์ ๊ฒฝ ์ฐ๋ฉด ๋ฉ๋๋ค.
- ์ฑ๋ฅ ์ต์ ํ์ ์ง์ ์ ์ํฅ์ ๋ฏธ์น๋ ํต์ฌ CWV ํญ๋ชฉ
- LCP, CLS, INP (ํ์ฌ์ ๋ฏธ๋์ SEO๋ฅผ ๊ฒฐ์ )
- ์ง์ฐ ๋ก๋ฉ์ ํตํด ์ ์ด ๊ฐ๋ฅํ ํญ๋ชฉ
- Third-party script ์ํฅ ์ต์ํ
- ๋ฉ์ธ ์ค๋ ๋ ์ ์ ์์ ์กฐ์
์ฆ, ๋ฐ์ด๋ธ ๊ฒฝ๊ณ ๋ฅผ ์์ ํ ์์ ๋ ๊ฒ์ด ๋ชฉํ๊ฐ ์๋๋ผ, ๊ทธ ์ํฅ๋ ฅ์ ์ต์ํํ์ฌ ํต์ฌ SEO ์ ์๋ฅผ ์งํค๋ ๊ฒ์ด ํต์ฌ ์ต์ ํ ์ ๋ต์ด ๋ฉ๋๋ค.
8. ์ง์ฐ ๋ก๋ฉ์ ์์ต์๋ ๊ธ์ ์ ์ธ ์ํฅ์ ์ค๋ค
๋ธ๋ก๊ทธ ์ด์์์๊ฒ ๊ฐ์ฅ ํฐ ์ง๋ฌธ์ ์ด๊ฒ์ ๋๋ค:
๋ฐ์ด๋ธ ๊ด๊ณ ๋ฅผ ์ง์ฐ ๋ก๋ฉํ๋ฉด ๊ด๊ณ ์์ต์ด ์ค์ง ์๋๊ฐ?
์ ํํ ๋ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
์์ต์ด ์ค์ง ์๋๋ค. ์คํ๋ ค ์ฅ๊ธฐ์ ์ผ๋ก๋ ๋์ด๋๋ค.
๊ทธ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ ์ ์ํ ๊ตฌ์กฐ๊ฐ ์๋ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- SEO ๊ฐ์ ๊ฒ์ ๋ ธ์ถ ์ฆ๊ฐ PV(ํ์ด์ง ๋ทฐ) ์ฆ๊ฐ
- PV ์ฆ๊ฐ ๊ด๊ณ ๋ ธ์ถ ์ด๋ ์ฆ๊ฐ ์์ต ์ฆ๊ฐ
๋ํ, ๋ฐ์ด๋ธ ๊ด๊ณ ๋ ์ฌ์ฉ์๊ฐ ์ด๋ ์ ๋ ์คํฌ๋กคํ์ฌ ์ฝํ ์ธ ์ ๋ชฐ์ ํ ๊ด์ฌ ๊ตฌ๊ฐ์ ๋ณด์ผ ๋ ํด๋ฆญ๋ฅ (CTR)์ด ๋ ๋๊ฒ ๋ํ๋๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ์ฆ, ์ฌ์ฉ์์ ์์ ์ด ๋จธ๋ฌด๋ ํ์ด๋ฐ์ ๊ด๊ณ ๊ฐ ๋ฑ์ฅํ๋ ๋ฐฉ์์ด CTR์ ํจ์ฌ ๋ ํจ๊ณผ์ ์ ๋๋ค. ์ด๋ ๋ฐ์ด๋ธ ๋ด๋ถ ๋ฐ์ดํฐ ๋ถ์์์๋ ๋์ผํ๊ฒ ์ ์ฆ๋๋ ํจํด์ ๋๋ค.
9. ์ง์ฐ ๋ก๋ฉ์ ์ํ ๊ธฐ์ ์ ๊ตฌํ ๊ฐ์ (Actionable Summary)
์ง์ฐ ๋ก๋ฉ ๋ฐ์ด๋ธ ๊ด๊ณ ๋ก๋ฉ ๋ฐฉ์์ ๋ค์์ 5๋จ๊ณ ๊ตฌ์ฑ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ค.
- `scriptLoaded` ํ๋๊ทธ๋ก ์ค๋ณต ์คํ์ ์๋ฒฝํ๊ฒ ์ฐจ๋จ.
- ์ต์ด ์ํธ์์ฉ(์คํฌ๋กค, ํฐ์น ๋ฑ) ์ด๋ฒคํธ ๋ฐ์ ์ ์คํฌ๋ฆฝํธ ๋์ ์ฝ์ .
- ์คํฌ๋ฆฝํธ ์ฝ์ ํ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ์ฆ์ ์ ๊ฑฐํ์ฌ CPU ๋ถํ๋ฅผ ์ต์ํ.
- ๊ด๊ณ DIV๋ `height`๋ฅผ ์ง์ ํ๋ Placeholder๋ก ๋ฏธ๋ฆฌ ํ๋ณดํ์ฌ CLS ๋ฐฉ์ง.
- ๊ด๊ณ ๋ก๋ฉ ์์ ๋ถ๋ฆฌ๋ฅผ ํตํด INP ๋ฐ CPU ์์ ์ฑ ํ๋ณด.
ํต์ฌ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
[์ฌ์ฉ์ ์ง์
] - [๋น ๋ฅธ ์ด๊ธฐ ๋ ๋๋ง (๊ด๊ณ ์์)] - [์ฌ์ฉ์ ์คํฌ๋กค/ํด๋ฆญ] -
[๋ฐ์ด๋ธ ์คํฌ๋ฆฝํธ ๋์ ์ฝ์
] - [๊ด๊ณ ๋ ๋๋ง ๋ฐ ์์ต ๋ฐ์]
์ฆ, ์ด๊ธฐ ์ฑ๋ฅ์ ๋ณด์ฅํ๋ฉด์ ๊ด๊ณ ์์ต์ ๊ทน๋ํํ๋ ๊ฐ์ฅ ์ต์ ํ๋ ๋ฐฉ์์ ๋๋ค.
10. ๋ธ๋ก๊ทธ ์ด์์๊ฐ ๋ฐ๋์ ๊ธฐ์ตํด์ผ ํ ํต์ฌ ์ ๋ต ์ ๋ฆฌ (ํ์ ์ฒดํฌ๋ฆฌ์คํธ)
- ๋ฐ์ด๋ธ ๊ด๊ณ ๋ ์ฆ์ ๋ก๋ฉํ๋ฉด ๋ฐ๋์ SEO๋ฅผ ๋ง๊ฐ๋จ๋ฆฐ๋ค.
- ์ง์ฐ ๋ก๋ฉ์ CWV 3๋ ์งํ(LCP, CLS, INP)๋ฅผ ๋ชจ๋ ํ๊ธฐ์ ์ผ๋ก ๊ฐ์ ํ๋ค.
- SEO ๊ฐ์ ์ผ๋ก ์ธํ PV ์ฆ๊ฐ๊ฐ ๊ถ๊ทน์ ์ธ ๋ฐ์ด๋ธ ๊ด๊ณ ์์ต ์ฆ๊ฐ๋ก ์ด์ด์ง๋ค.
- ๊ด๊ณ ๊ณต๊ฐ์ ๋ฐ๋์ `style="height: XXXpx;"`๋ฅผ ์ง์ ํ Placeholder๋ก ๋ฏธ๋ฆฌ ํ๋ณดํ๋ค.
- PageSpeed์ 3rd-party ๊ฒฝ๊ณ ๋ ๋ฌด์ํ๊ณ , LCP, CLS, INP 3๊ฐ์ง ์ฑ๋ฅ ์งํ์ ์ง์คํ๋ค.
์ด ์ต์ ํ ์ ๋ต์ ์ ์ฉํ๋ฉด, ๋์ ํธ๋ํฝ๊ณผ ์์ ์ ์ธ ์์ต์ ๋์์ ํ๋ณดํ๋ ์ต์ ํ ์์คํ ์ ๊ฐ์ถ ์ ์์ต๋๋ค.
Q1: ๋ฐ์ด๋ธ ๊ด๊ณ ๋ฅผ ์ง์ฐ ๋ก๋ฉํ๋ฉด ๊ด๊ณ ์์ต์ด ์ค์ด๋ค๊น์?
์๋์. ์ง์ฐ ๋ก๋ฉ์ ์ด๊ธฐ ํ์ด์ง ๋ก๋ฉ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๋ฐฉ์์ด๋ฉฐ, ์ฌ์ฉ์๊ฐ ์คํฌ๋กคํ๊ฑฐ๋ ์ํธ์์ฉํ ๋ ๊ด๊ณ ๊ฐ ๋ก๋ฉ๋๋ฏ๋ก ์ฅ๊ธฐ์ ์ผ๋ก ๊ด๊ณ ๋ ธ์ถ๊ณผ ํด๋ฆญ๋ฅ (CTR)์ด ์ฆ๊ฐํ์ฌ ์์ต์ ์คํ๋ ค ๋์ผ ์ ์์ต๋๋ค.
Q2: ์ง์ฐ ๋ก๋ฉ์ ์ ์ฉํ๋ฉด SEO ์ ์์ ์ด๋ค ์ํฅ์ ๋ฏธ์น๋์?
์ง์ฐ ๋ก๋ฉ์ Core Web Vitals(CWV) ์งํ, ํนํ LCP, CLS, INP๋ฅผ ๊ฐ์ ํ์ฌ SEO ์ ์๋ฅผ ์์ ์ ์ผ๋ก ์ ์งํ๊ฑฐ๋ ํฅ์์ํต๋๋ค. ์ด๊ธฐ ๋ ๋๋ง ์ฑ๋ฅ์ด ์ ์ง๋๋ฏ๋ก ๊ฒ์ ์์ง ์์ ํ๋ฝ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
Q3: ๋ฐ์ด๋ธ ๊ด๊ณ Lazy Loading ์ ์ฉ ์ ์ด๋ค ๊ธฐ์ ์ ์ฌ์ฉํด์ผ ํ๋์?
์ฌ์ฉ์ ์ต์ด ์ํธ์์ฉ(์คํฌ๋กค, ํด๋ฆญ, ํฐ์น ๋ฑ)์ ๊ฐ์งํ์ฌ JavaScript๋ก ๊ด๊ณ ์คํฌ๋ฆฝํธ๋ฅผ ๋์ ์ผ๋ก ์ฝ์ ํ๋ ๋ฐฉ์์ด ๊ฐ์ฅ ํจ๊ณผ์ ์ ๋๋ค. ๋ํ ๊ด๊ณ DIV์ ๊ณ ์ ๋์ด(Placeholder)๋ฅผ ์ง์ ํด CLS๋ฅผ ์ต์ํํด์ผ ํฉ๋๋ค.
Q4: ๋ชจ๋ฐ์ผ ํ๊ฒฝ์์๋ ์ง์ฐ ๋ก๋ฉ์ด ํจ๊ณผ์ ์ผ๊น์?
์. ๋ชจ๋ฐ์ผ ํ์ด์ง๋ ๋ฐ์คํฌํฑ๋ณด๋ค ์ด๊ธฐ ๋ ๋๋ง ์ฑ๋ฅ์ด ๋ ์ค์ํฉ๋๋ค. ์ง์ฐ ๋ก๋ฉ์ ์ ์ฉํ๋ฉด ๋ชจ๋ฐ์ผ์์ ๋ฐ์ํ๋ LCP ์ง์ฐ๊ณผ CLS ๋ฌธ์ ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๋ฐฉ์งํ๋ฉด์ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.