λͺ¨λ μ§μ° λ‘λ©μΌλ‘ μλ°μ€ν¬λ¦½νΈ μ ν리μΌμ΄μ μ±λ₯μ μ΅μ ννμΈμ. μ΄ κ°μ΄λλ μ μΈκ³ μ¬μ©μλ₯Ό μν ꡬν κΈ°μ , μ΄μ , λͺ¨λ² μ¬λ‘λ₯Ό λ€λ£Ήλλ€.
μλ°μ€ν¬λ¦½νΈ λͺ¨λ μ§μ° λ‘λ©: κΈλ‘λ² μ ν리μΌμ΄μ μ μν μ±λ₯ μ λ΅
μ€λλ μ μΉ κ°λ° νκ²½μμ λΉ λ₯΄κ³ λ°μμ±μ΄ λ°μ΄λ μ¬μ©μ κ²½νμ μ 곡νλ κ²μ λ§€μ° μ€μν©λλ€. μ μΈκ³ μ¬μ©μλ μ§λ¦¬μ μμΉλ λ€νΈμν¬ μ°κ²° μλμ κ΄κ³μμ΄ μΉμ¬μ΄νΈμ μ ν리μΌμ΄μ μ΄ λΉ λ₯΄κ³ ν¨μ¨μ μΌλ‘ λ‘λλκΈ°λ₯Ό κΈ°λν©λλ€. νλ‘ νΈμλ κ°λ°μ λ리 μ¬μ©λλ μΈμ΄μΈ μλ°μ€ν¬λ¦½νΈλ νΉν 볡μ‘ν μ ν리μΌμ΄μ μμ νμ΄μ§ λ‘λ μκ°μ μλΉν μν₯μ λ―ΈμΉλ κ²½μ°κ° λ§μ΅λλ€. μ΄ λ¬Έμ λ₯Ό μννλ κ°λ ₯ν κΈ°μ μ€ νλκ° λ°λ‘ μλ°μ€ν¬λ¦½νΈ λͺ¨λ μ§μ° λ‘λ©μ λλ€.
μλ°μ€ν¬λ¦½νΈ λͺ¨λ μ§μ° λ‘λ©μ΄λ 무μμΈκ°?
μ¨λ맨λ λ‘λ©(on-demand loading)μ΄λΌκ³ λ νλ λͺ¨λ μ§μ° λ‘λ©μ μ΄κΈ° νμ΄μ§ λ‘λ μ λͺ¨λ μλ°μ€ν¬λ¦½νΈ λͺ¨λμ ν λ²μ λ‘λνλ λμ , νμν λλ§ λ‘λνλ μ λ΅μ λλ€. μ΄ μ κ·Ό λ°©μμ μ΄κΈ° λ€μ΄λ‘λ ν¬κΈ°λ₯Ό μ€μ¬ νμ΄μ§ λ‘λ μκ°μ λ¨μΆνκ³ μ²΄κ° μ±λ₯μ ν₯μμν΅λλ€. λͺ¨λ λͺ¨λμ 미리 μ΄μ¬ν λ‘λνλ λμ , λΈλΌμ°μ λ νΉμ κΈ°λ₯μ΄λ μ»΄ν¬λνΈκ° νμν λλ§ μ½λλ₯Ό λ€μ΄λ‘λνκ³ μ€νν©λλ€. μ΄λ νΉν λ¨μΌ νμ΄μ§ μ ν리μΌμ΄μ (SPA)κ³Ό μλ§μ νΉμ§κ³Ό κΈ°λ₯μ κ°μ§ λκ·λͺ¨ μΉ μ ν리μΌμ΄μ μ μ μ©ν©λλ€.
μ¨λΌμΈμΌλ‘ μμμ μ£Όλ¬Ένλ κ²κ³Ό κ°λ€κ³ μκ°ν΄λ³΄μΈμ. μ 체 λ©λ΄λ₯Ό ν λ²μ μ£Όλ¬Ένμ§λ μκ² μ£ ? μνλ κ²μ μ ννλ©΄ νΉμ νλͺ©λ§ λ°°λ¬λ©λλ€. μ§μ° λ‘λ©λ λΉμ·νκ² μλν©λλ€. νμν μ½λλ§ κ°μ Έμμ μ€νλ©λλ€.
λͺ¨λ μ§μ° λ‘λ©μ ꡬνν΄μΌ νλ μ΄μ
λͺ¨λ μ§μ° λ‘λ© κ΅¬νμ μ΄μ μ λ€μνλ©° μ¬μ©μ κ²½νκ³Ό μ λ°μ μΈ μ ν리μΌμ΄μ μ±λ₯μ μ§μ μ μΈ μν₯μ λ―ΈμΉ©λλ€:
- μ΄κΈ° νμ΄μ§ λ‘λ μκ° λ¨μΆ: μ€μνμ§ μμ λͺ¨λμ λ‘λ©μ μ§μ°μμΌ μ΄κΈ° νμ΄μ§ λ‘λ μκ°μ ν¬κ² μ€μ λλ€. μ΄λ μ¬μ©μλ₯Ό μ μ§νκ³ κ²μ μμ§ μμλ₯Ό ν₯μμν€λ λ° μ€μν©λλ€. μ¬μ©μλ λΉ λ₯΄κ² λ‘λλλ μΉμ¬μ΄νΈμ λ μ€λ 머무λ κ²½ν₯μ΄ μμ΅λλ€.
- μ²΄κ° μ±λ₯ ν₯μ: μ΄ λ€μ΄λ‘λ ν¬κΈ°κ° λμΌνλλΌλ μ§μ° λ‘λ©μ μ ν리μΌμ΄μ μ΄ λ λΉ λ₯΄κ² λκ»΄μ§κ² λ§λλλ€. μ¬μ©μλ ν΅μ¬ κΈ°λ₯μ΄ λΉ λ₯΄κ² λ‘λλλ κ²μ λ³΄κ³ λ κΈμ μ μΈ κ²½νμ νκ² λ©λλ€.
- 리μμ€ μλΉ κ°μ: νμν λͺ¨λλ§ λ‘λν¨μΌλ‘μ¨ λΈλΌμ°μ λ μ΄κΈ° λ‘λ μ€μ λ©λͺ¨λ¦¬ λ° CPUμ κ°μ 리μμ€λ₯Ό λ μλΉν©λλ€. μ΄λ ꡬν κΈ°κΈ°λ λμνμ΄ μ νλ μ¬μ©μμκ² νΉν μ€μν©λλ€.
- μ΅μ νλ μΊμ±μ μν μ½λ λΆν : μ§μ° λ‘λ©μ μ’ μ’ μ ν리μΌμ΄μ μ λ μκ³ λ 립μ μΈ λ²λ€λ‘ λλλ μ½λ λΆν μ ν¬ν¨ν©λλ€. μ΄λ₯Ό ν΅ν΄ λΈλΌμ°μ λ μ΄λ¬ν λ²λ€μ λ ν¨κ³Όμ μΌλ‘ μΊμν μ μμ΅λλ€. λͺ¨λμ΄ μ λ°μ΄νΈλλ©΄ μ 체 μ ν리μΌμ΄μ μ΄ μλ ν΄λΉ λ²λ€λ§ λ€μ λ€μ΄λ‘λνλ©΄ λ©λλ€.
- κΈλ‘λ² μ¬μ©μλ₯Ό μν λ λμ μ¬μ©μ κ²½ν: μΈν°λ· μ°κ²°μ΄ λ리거λ λ°μ΄ν° μκΈμ κ° μ νμ μΈ μ¬μ©μλ μ΄κΈ° λ‘λ μκ° λ¨μΆμΌλ‘ ν° μ΄μ μ μ»μ΅λλ€. μ§μ° λ‘λ©μ μ΄λ¬ν μ¬μ©μκ° κ³Όλν μ§μ° μμ΄ μ ν리μΌμ΄μ μ ν΅μ¬ κΈ°λ₯μ μ‘μΈμ€ν μ μλλ‘ λ³΄μ₯ν©λλ€. λμνμ΄ μ νλ μ골 μ§μμ μ¬μ©μλ₯Ό μμν΄ λ³΄μμμ€. μ§μ° λ‘λ©μ μ¬μ© κ°λ₯ν μ ν리μΌμ΄μ κ³Ό μ¬μ©ν μ μλ μ ν리μΌμ΄μ μ μ°¨μ΄λ₯Ό λ§λ€ μ μμ΅λλ€.
λͺ¨λ μ§μ° λ‘λ© κ΅¬ν κΈ°μ
μλ°μ€ν¬λ¦½νΈ μ ν리μΌμ΄μ μμ λͺ¨λ μ§μ° λ‘λ©μ ꡬννλ λ° μ¬μ©ν μ μλ λͺ κ°μ§ κΈ°μ μ΄ μμ΅λλ€:
1. λμ κ°μ Έμ€κΈ° (import()
)
import()
ꡬ문μ λͺ¨λμ μ§μ° λ‘λ©νκΈ° μν κ°μ₯ νλμ μ΄κ³ κΆμ₯λλ μ κ·Ό λ°©μμ
λλ€. μ΄λ₯Ό ν΅ν΄ λ°νμμ λͺ¨λμ λμ μΌλ‘ λ‘λν μ μμ΅λλ€. μ μ κ°μ Έμ€κΈ°(import ... from ...
)μ λ¬λ¦¬, λμ κ°μ Έμ€κΈ°λ λͺ¨λμ΄ λ‘λλλ©΄ λͺ¨λμ λ΄λ³΄λ΄κΈ°(exports)λ‘ νμΈλλ νλ‘λ―Έμ€(promise)λ₯Ό λ°νν©λλ€.
μμ:
μ¬μ©μ μνΈμμ©μ μΆμ νλ analytics.js
λΌλ λͺ¨λμ΄ μλ€κ³ κ°μ ν΄ λ΄
μλ€. μ΄ λͺ¨λμ μ¬μ©μκ° λ²νΌμ ν΄λ¦νλ κ²κ³Ό κ°μ νΉμ μμ
μ μνν λλ§ λ‘λνκ³ μΆμ μ μμ΅λλ€.
async function trackEvent() {
const analytics = await import('./analytics.js');
analytics.track('button_click');
}
document.getElementById('myButton').addEventListener('click', trackEvent);
μ΄ μμ μμ analytics.js
λͺ¨λμ μ¬μ©μκ° IDκ° "myButton"μΈ λ²νΌμ ν΄λ¦ν λλ§ λ‘λλ©λλ€. await
ν€μλλ track()
ν¨μκ° νΈμΆλκΈ° μ μ λͺ¨λμ΄ μμ ν λ‘λλλλ‘ λ³΄μ₯ν©λλ€.
λμ κ°μ Έμ€κΈ°μ μ΄μ :
- λ€μ΄ν°λΈ λΈλΌμ°μ μ§μ: λμ κ°μ Έμ€κΈ°λ μ΄μ μ΅μ λΈλΌμ°μ μμ λ리 μ§μλ©λλ€.
- νλ‘λ―Έμ€ κΈ°λ°: νλ‘λ―Έμ€ κΈ°λ° APIλ₯Ό μ¬μ©νλ©΄ λΉλκΈ° λͺ¨λ λ‘λ©μ μ½κ² μ²λ¦¬ν μ μμ΅λλ€.
- μ½λ λΆν : μΉν©(Webpack) λ° νμ¬(Parcel)κ³Ό κ°μ λ²λ€λ¬λ λμ μΌλ‘ κ°μ Έμ¨ λͺ¨λμ λν΄ λ³λμ λ²λ€μ μλμΌλ‘ μμ±νμ¬ ν¨μ¨μ μΈ μΊμ±μ κ°λ₯νκ² ν©λλ€.
- μ‘°κ±΄λΆ λ‘λ©: μ¬μ©μ μνΈμμ©, κΈ°κΈ° κΈ°λ₯ λλ κΈ°ν μμΈμ λ°λΌ λͺ¨λμ 쑰건λΆλ‘ λ‘λν μ μμ΅λλ€. μλ₯Ό λ€μ΄, κ³ κΈ κΈ°κΈ°λ₯Ό μ¬μ©νλ μ¬μ©μμκ²λ§ κ³ ν΄μλ μ΄λ―Έμ§ μ²λ¦¬ λΌμ΄λΈλ¬λ¦¬λ₯Ό λ‘λν μ μμ΅λλ€.
2. Intersection Observer API
Intersection Observer APIλ₯Ό μ¬μ©νλ©΄ μμκ° λ·°ν¬νΈμ λ€μ΄μ€κ±°λ λκ° λλ₯Ό κ°μ§ν μ μμ΅λλ€. μ΄λ μ΄κΈ°μ νλ©΄ νλ¨(below the fold)μ μ¨κ²¨μ§ μ΄λ―Έμ§λ μ»΄ν¬λνΈλ₯Ό μ§μ° λ‘λ©νλ λ° νΉν μ μ©ν©λλ€.
μμ:
const images = document.querySelectorAll('img[data-src]');
const observer = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const img = entry.target;
img.src = img.dataset.src;
img.removeAttribute('data-src');
observer.unobserve(img);
}
});
});
images.forEach(img => {
observer.observe(img);
});
μ΄ μμ μμ μ½λλ data-src
μμ±μ κ°μ§ λͺ¨λ img
μμλ₯Ό μ νν©λλ€. μ΄λ―Έμ§κ° λ·°ν¬νΈμ λ€μ΄μ€λ©΄ src
μμ±μ΄ data-src
μμ±μ κ°μΌλ‘ μ€μ λμ΄ μ΄λ―Έμ§κ° λ‘λλ©λλ€. κ·Έλ° λ€μ μ΅μ λ²λ λΆνμν μ¬λ‘λ©μ νΌνκΈ° μν΄ ν΄λΉ μ΄λ―Έμ§ κ΄μ°°μ μ€λ¨ν©λλ€.
Intersection Observerμ μ΄μ :
- ν¨μ¨μ±: Intersection Observer APIλ μ±λ₯μ΄ λ§€μ° λ°μ΄λλ©° μλ μ€ν¬λ‘€ μ΄λ²€νΈ 리μ€λκ° νμ μμ΅λλ€.
- μ μ°μ±: μ΄λ―Έμ§λΏλ§ μλλΌ λͺ¨λ μ νμ μ½ν μΈ λ₯Ό μ§μ° λ‘λ©νλ λ° μ¬μ©ν μ μμ΅λλ€.
- λμ λΈλΌμ°μ μ§μ: Intersection Observer APIλ μ΅μ λΈλΌμ°μ μμ λ리 μ§μλ©λλ€.
3. μλ°μ€ν¬λ¦½νΈ νλ μμν¬ λλ λΌμ΄λΈλ¬λ¦¬ μ¬μ©
React, Angular, Vue.jsμ κ°μ λ§μ μλ°μ€ν¬λ¦½νΈ νλ μμν¬μ λΌμ΄λΈλ¬λ¦¬λ λͺ¨λ λ° μ»΄ν¬λνΈ μ§μ° λ‘λ©μ μν λ΄μ₯ λ©μ»€λμ¦μ μ 곡ν©λλ€.
React
Reactλ μ»΄ν¬λνΈλ₯Ό μ§μ° λ‘λ©νκΈ° μν΄ React.lazy()
ν¨μμ Suspense
μ»΄ν¬λνΈλ₯Ό μ 곡ν©λλ€. React.lazy()
λ₯Ό μ¬μ©νλ©΄ λμ μΌλ‘ λ‘λλλ μ»΄ν¬λνΈλ₯Ό μ μν μ μκ³ , Suspense
λ μ»΄ν¬λνΈκ° λ‘λλλ λμ λ체 UIλ₯Ό νμνλ λ°©λ²μ μ 곡ν©λλ€.
μμ:
import React, { Suspense, lazy } from 'react';
const MyComponent = lazy(() => import('./MyComponent'));
function App() {
return (
Loading...
μ΄ μμ μμλ MyComponent
κ° μ§μ° λ‘λ©λ©λλ€. λ‘λ©λλ λμ "Loading..." λ©μμ§κ° νμλ©λλ€.
Angular
Angularλ λΌμ°ν
ꡬμ±μ loadChildren
μμ±μ μ¬μ©νμ¬ λͺ¨λμ μ§μ° λ‘λ©μ μ§μν©λλ€.
μμ:
const routes: Routes = [
{
path: 'my-module',
loadChildren: () => import('./my-module/my-module.module').then(m => m.MyModule)
}
];
μ΄ μμ μμλ μ¬μ©μκ° /my-module
κ²½λ‘λ‘ μ΄λν λλ§ MyModule
μ΄ λ‘λλ©λλ€.
Vue.js
Vue.jsλ μ»΄ν¬λνΈ λ±λ‘ μ λμ κ°μ Έμ€κΈ°λ₯Ό μ¬μ©νμ¬ μ»΄ν¬λνΈμ μ§μ° λ‘λ©μ μ§μν©λλ€.
μμ:
const MyComponent = () => ({
component: import('./MyComponent.vue'),
loading: LoadingComponent,
error: ErrorComponent,
delay: 200,
timeout: 3000
});
μ΄ μμ μμλ MyComponent.vue
μ»΄ν¬λνΈκ° μ§μ° λ‘λ©λ©λλ€. loading
, error
, delay
, timeout
μ΅μ
μ μ¬μ©νμ¬ λ‘λ© κ²½νμ μ¬μ©μ μ μν μ μμ΅λλ€.
λͺ¨λ μ§μ° λ‘λ© κ΅¬νμ μν λͺ¨λ² μ¬λ‘
λͺ¨λ μ§μ° λ‘λ©μ ν¨κ³Όμ μΌλ‘ ꡬννκ³ κ·Έ μ΄μ μ κ·Ήλννλ €λ©΄ λ€μ λͺ¨λ² μ¬λ‘λ₯Ό κ³ λ €νμμμ€:
- μ€μ λͺ¨λ μλ³: μ΄κΈ° νμ΄μ§ λ‘λμ νμμ μΈ λͺ¨λμ κ²°μ νκ³ μ¦μ λ‘λν©λλ€. λ€λ₯Έ λͺ¨λμ μ§μ° λ‘λ©ν μ μμ΅λλ€.
- μ λ΅μ μΈ μ½λ λΆν : κΈ°λ₯μ΄λ κ²½λ‘λ₯Ό κΈ°λ°μΌλ‘ μ½λλ₯Ό λ Όλ¦¬μ μΈ λ²λ€λ‘ λΆν ν©λλ€. μ΄λ₯Ό ν΅ν΄ νΉμ κΈ°λ₯μ΄λ νμ΄μ§μ νμν μ½λλ§ λ‘λν μ μμ΅λλ€.
- λͺ¨λ λ²λ€λ¬ μ¬μ©: μΉν©(Webpack), νμ¬(Parcel), λ‘€μ (Rollup)κ³Ό κ°μ λͺ¨λ λ²λ€λ¬λ μ½λ λΆν λ° μ§μ° λ‘λ© νλ‘μΈμ€λ₯Ό μλνν©λλ€. λν μ½λλ₯Ό λμ± μ΅μ ννκΈ° μν΄ νΈλ¦¬ μμ΄νΉ λ° μ΅μνμ κ°μ κΈ°λ₯λ μ 곡ν©λλ€.
- λ‘λ© νμκΈ° ꡬν: λͺ¨λμ΄ λ‘λλλ λμ μ¬μ©μμκ² μκ°μ νΌλλ°±μ μ 곡ν©λλ€. κ°λ¨ν μ€νΌλλ μ κ΅ν λ‘λ© μ λλ©μ΄μ μ΄ λ μ μμ΅λλ€. μ΄λ μ¬μ©μ κΈ°λλ₯Ό κ΄λ¦¬νκ³ μ ν리μΌμ΄μ μ΄ μλ΅νμ§ μλλ€κ³ μκ°νλ κ²μ λ°©μ§νλ λ° λμμ΄ λ©λλ€.
- μ² μ ν ν μ€νΈ: μ§μ° λ‘λ© κ΅¬νμ μ² μ ν ν μ€νΈνμ¬ λͺ¨λμ΄ μ¬λ°λ₯΄κ² λ‘λλκ³ μκΈ°μΉ μμ μ€λ₯κ° μλμ§ νμΈν©λλ€. μ€λ₯ μ²λ¦¬ λ° λ체 λ©μ»€λμ¦μ νΉν μ£Όμλ₯Ό κΈ°μΈμ΄μμμ€.
- μ±λ₯ λͺ¨λν°λ§: μ±λ₯ λͺ¨λν°λ§ λꡬλ₯Ό μ¬μ©νμ¬ μ§μ° λ‘λ©μ΄ μ ν리μΌμ΄μ μ±λ₯μ λ―ΈμΉλ μν₯μ μΆμ ν©λλ€. μ΄λ μΆκ° μ΅μ ν μμμ μλ³νλ λ° λμμ΄ λ©λλ€. κ΅¬κΈ νμ΄μ§μ€νΌλ μΈμ¬μ΄νΈ(Google PageSpeed Insights) λ° μΉνμ΄μ§ν μ€νΈ(WebPageTest)μ κ°μ λꡬλ λ§€μ° μ μ©ν μ μμ΅λλ€.
- μ΄κΈ° νλ©΄ μ½ν μΈ μ°μ μμ μ§μ : μ΄κΈ° λ‘λ μ 보μ΄λ μ½ν μΈ (above the fold)κ° λΉ λ₯΄κ² λ‘λλλλ‘ ν©λλ€. μ΄κΈ°μ μ¨κ²¨μ§ λͺ¨λ κ²μ μ§μ° λ‘λ©ν©λλ€.
- λ€νΈμν¬ μν κ³ λ €: λ€νΈμν¬ μνμ λ°λΌ μ§μ° λ‘λ© μ λ΅μ μ‘°μ ν©λλ€. μλ₯Ό λ€μ΄, λ§€μ° λλ¦° μ°κ²°μμλ μ²΄κ° μ§μ°μ νΌνκΈ° μν΄ μ§μ° λ‘λ©μ λΉνμ±νν μ μμ΅λλ€.
- λΈλΌμ°μ μΊμ± ν¨κ³Όμ μΌλ‘ μ¬μ©: μ§μ° λ‘λ©λ λͺ¨λμ μλ²κ° μ¬λ°λ₯΄κ² μΊμνλλ‘ κ΅¬μ±ν©λλ€. μ΄λ κ² νλ©΄ νμ λ°©λ¬Έ μ λΆνμν μ¬λ€μ΄λ‘λλ₯Ό λ°©μ§ν μ μμ΅λλ€.
μ€μ μ μ© μ¬λ‘
λ€μμ λ€μν μλ리μ€μμ λͺ¨λ μ§μ° λ‘λ©μ΄ μ΄λ»κ² μ μ©λ μ μλμ§μ λν λͺ κ°μ§ μ€μ μ¬λ‘μ λλ€:
- μ μμκ±°λ μΉμ¬μ΄νΈ: μ μμκ±°λ μΉμ¬μ΄νΈλ μ ν μ΄λ―Έμ§ κ°€λ¬λ¦¬, μ¬μ©μ 리뷰 μΉμ , κ²°μ κ²μ΄νΈμ¨μ΄ ν΅ν©μ μ§μ° λ‘λ©ν μ μμ΅λλ€. ν΅μ¬ μ ν λͺ©λ‘ λ° μ₯λ°κ΅¬λ κΈ°λ₯μ μ¦μ λ‘λλ©λλ€.
- μμ λ―Έλμ΄ νλ«νΌ: μμ λ―Έλμ΄ νλ«νΌμ λΉλμ€ μ λ‘λ, κ³ κΈ κ²μ νν°, κ°μΈνλ μΆμ²κ³Ό κ°μ κΈ°λ₯μ μ§μ° λ‘λ©ν μ μμ΅λλ€. μ£Όμ λ΄μ€ νΌλ λ° μ¬μ©μ νλ‘ν μΉμ μ μ¦μ λ‘λλ©λλ€.
- μ½ν μΈ κ΄λ¦¬ μμ€ν (CMS): CMSλ νλ¬κ·ΈμΈ, κ³ κΈ ν μ€νΈ νΈμ§κΈ°, μ΄λ―Έμ§ μ‘°μ λꡬλ₯Ό μ§μ° λ‘λ©ν μ μμ΅λλ€. κΈ°λ³Έ μ½ν μΈ νΈμ§ λ° κ²μ κΈ°λ₯μ μ¦μ λ‘λλ©λλ€.
- μ§λ μ ν리μΌμ΄μ : μ§λ μ ν리μΌμ΄μ μ μμΈ μ§λ νμΌ, κ²½λ‘ νμ μκ³ λ¦¬μ¦, μ§λ¦¬ μμΉ μλΉμ€λ₯Ό μ§μ° λ‘λ©ν μ μμ΅λλ€. μ΄κΈ° μ§λ 보기 λ° κΈ°λ³Έ νμ κΈ°λ₯μ μ¦μ λ‘λλ©λλ€.
- κ΅μ λ΄μ€ μ¬μ΄νΈ: λκΈ μΉμ , κ΄λ ¨ κΈ°μ¬, μμ 곡μ κΈ°λ₯μ μ§μ° λ‘λ©νλ©΄ νΉν μΈκ³ μ¬λ¬ μ§μμ λλ¦° μ°κ²°μ μ¬μ©νλ μ¬μ©μμκ² μ΄κΈ° λ‘λ μκ°μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€. λΆλ―Έμμ νΈμ€ν λλ λ΄μ€ μ¬μ΄νΈμ μ μνλ λλ¨μμμμ λμνμ΄ μ νλ μ¬μ©μλ₯Ό μκ°ν΄ 보μμμ€.
κ³Όμ λ° κ³ λ €μ¬ν
λͺ¨λ μ§μ° λ‘λ©μ μλΉν μ΄μ μ μ 곡νμ§λ§, μ μ¬μ μΈ κ³Όμ μ κ³ λ €μ¬νμ μΈμ§νλ κ²μ΄ μ€μν©λλ€:
- 볡μ‘μ± μ¦κ°: μ§μ° λ‘λ©μ ꡬννλ©΄ μ½λλ² μ΄μ€μ λΉλ νλ‘μΈμ€μ 볡μ‘μ±μ΄ μΆκ°λ μ μμ΅λλ€.
- FOUC(Flash of Unstyled Content) λ°μ κ°λ₯μ±: μ μ€νκ² κ΅¬ννμ§ μμΌλ©΄ μ§μ° λ‘λ©μΌλ‘ μΈν΄ ν΄λΉ CSSκ° λ‘λλ λκΉμ§ μ€νμΌμ΄ μ μ©λμ§ μμ μ½ν μΈ κ° νμλλ FOUCκ° λ°μν μ μμ΅λλ€.
- μ€λ₯ μ²λ¦¬: λͺ¨λμ μ§μ° λ‘λ©ν λ μ€λ₯λ₯Ό μ μμ μΌλ‘ μ²λ¦¬νλ κ²μ΄ μ€μν©λλ€. μ¬μ©μμκ² λ체 λ©μ»€λμ¦κ³Ό μ μ΅ν μ€λ₯ λ©μμ§λ₯Ό μ 곡νμμμ€.
- SEOμ λ―ΈμΉλ μν₯: κ²μ μμ§ ν¬λ‘€λ¬κ° μ§μ° λ‘λ©λ μ½ν μΈ λ₯Ό ν¬ν¨ν λͺ¨λ μ½ν μΈ μ μ κ·Όν μ μλλ‘ νμμμ€. μλ² μΈ‘ λ λλ§ λλ μ¬μ λ λλ§μ μ¬μ©νμ¬ ν¬λ‘€λ¬κ° μ½ν μΈ μ λ μ½κ² μ κ·Όν μ μλλ‘ λ§λμμμ€.
- μμ‘΄μ±: νΉν λμ κ°μ Έμ€κΈ°λ₯Ό μ¬μ©ν λ λͺ¨λ κ°μ μμ‘΄μ±μ μ μ€νκ² κ΄λ¦¬νμμμ€. λͺ¨λμ΄ μ€νλκΈ° μ μ νμν λͺ¨λ μμ‘΄μ±μ΄ λ‘λλμλμ§ νμΈνμμμ€.
κ²°λ‘
μλ°μ€ν¬λ¦½νΈ λͺ¨λ μ§μ° λ‘λ©μ μΉ μ ν리μΌμ΄μ , νΉν μ μΈκ³ μ¬μ©μλ₯Ό μν μ¬μ©μ κ²½νμ ν¬κ² ν₯μμν¬ μ μλ κ°λ ₯ν μ±λ₯ μ΅μ ν κΈ°μ μ λλ€. νμν λλ§ λͺ¨λμ λ‘λν¨μΌλ‘μ¨ μ΄κΈ° νμ΄μ§ λ‘λ μκ°μ μ€μ΄κ³ , μ²΄κ° μ±λ₯μ κ°μ νλ©°, 리μμ€λ₯Ό μ μ½ν μ μμ΅λλ€. μ§μ° λ‘λ©μ ꡬννλ λ° μΌλΆ 볡μ‘μ±μ΄ μΆκ°λ μ μμ§λ§, κ·Έ μ΄μ μ μ’ μ’ λΉμ©μ λ₯κ°ν©λλ€. λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄κ³ μ μ¬μ μΈ κ³Όμ λ₯Ό μ μ€νκ² κ³ λ €ν¨μΌλ‘μ¨ λͺ¨λ μ§μ° λ‘λ©μ ν¨κ³Όμ μΌλ‘ νμ©νμ¬ μ μΈκ³ μ¬μ©μλ₯Ό μν λ λΉ λ₯΄κ³ , λ°μμ±μ΄ λ°μ΄λλ©°, μ¬μ©μ μΉνμ μΈ μΉ μ ν리μΌμ΄μ μ λ§λ€ μ μμ΅λλ€. μ§μ° λ‘λ©μ μ±ννμ¬ μ¬μ©μμ μμΉλ μ°κ²° μλμ κ΄κ³μμ΄ λ λΆλλ½κ³ ν¨μ¨μ μΈ μΉ κ²½νμ μ 곡νμμμ€.