ν리λ‘λ, ν리νμΉ, ν리컀λ₯νΈμ κ°μ 리μμ€ ννΈλ₯Ό μ¬μ©νμ¬ μΉμ¬μ΄νΈ λ‘λ© μκ°μ μ΅μ ννκ³ μ λ°μ μΈ μ¬μ©μ κ²½νμ κ°μ νλ λ°©λ²μ μμ보μΈμ.
리μμ€ ννΈ(ν리λ‘λ, ν리νμΉ, ν리컀λ₯νΈ)λ‘ μΉμ¬μ΄νΈ μλ ν₯μ
μ€λλ λΉ λ₯΄κ² λ³ννλ λμ§νΈ μΈμμμ μΉμ¬μ΄νΈ μλλ 무μλ³΄λ€ μ€μν©λλ€. μ¬μ©μλ€μ μΉμ¬μ΄νΈκ° λΉ λ₯΄κ² λ‘λλκ³ μ¦μ λ°μνκΈ°λ₯Ό κΈ°λν©λλ€. λλ¦° λ‘λ© μκ°μ μ¬μ©μ κ²½ν μ ν, λμ μ΄νλ₯ , κΆκ·Ήμ μΌλ‘λ λΉμ¦λμ€ μμ€λ‘ μ΄μ΄μ§ μ μμ΅λλ€. 리μμ€ ννΈλ λΈλΌμ°μ μκ² μ΄λ€ 리μμ€κ° μ€μνμ§, μ΄λ»κ² μ°μ μμλ₯Ό μ ν΄μΌ νλμ§ μλ €μ€μΌλ‘μ¨ κ°λ°μκ° μΉμ¬μ΄νΈ λ‘λ© μκ°μ μ΅μ ννλ λ° λμμ μ€ μ μλ κ°λ ₯ν λꡬμ
λλ€. μ΄ κΈμμλ μΈ κ°μ§ μ£Όμ 리μμ€ ννΈμΈ preload, prefetch, preconnectλ₯Ό μ΄ν΄λ³΄κ³ ꡬνμ μν μ€μ©μ μΈ μμ λ₯Ό μ 곡ν©λλ€.
리μμ€ ννΈ μ΄ν΄νκΈ°
리μμ€ ννΈλ μΉ νμ΄μ§κ° λ―Έλμ νμλ‘ ν 리μμ€μ λν΄ λΈλΌμ°μ μ μ§μνλ λͺ λ Ήμ λλ€. κ°λ°μλ μ΄λ₯Ό ν΅ν΄ μ€μν 리μμ€μ λν΄ λΈλΌμ°μ μ 미리 μλ €μ€ μ μμΌλ©°, λΈλΌμ°μ λ νμλ³΄λ€ λ μΌμ° ν΄λΉ 리μμ€λ₯Ό κ°μ Έμ€κ±°λ μ°κ²°ν μ μμ΅λλ€. μ΄λ λ‘λ© μκ°μ ν¬κ² λ¨μΆνκ³ μΈμ§λ μ±λ₯μ ν₯μμν¬ μ μμ΅λλ€.
μΈ κ°μ§ μ£Όμ 리μμ€ ννΈλ λ€μκ³Ό κ°μ΅λλ€:
- Preload: μ΄κΈ° νμ΄μ§ λ‘λμ νμν ν΅μ¬ 리μμ€λ₯Ό κ°μ Έμ΅λλ€.
- Prefetch: ν₯ν νμ λλ μνΈ μμ©μ νμν κ°λ₯μ±μ΄ μλ 리μμ€λ₯Ό κ°μ Έμ΅λλ€.
- Preconnect: μ€μν μλνν° μλ²μ λν μ‘°κΈ° μ°κ²°μ μ€μ ν©λλ€.
Preload: ν΅μ¬ 리μμ€μ μ°μ μμ μ§μ
Preloadλ 무μμΈκ°μ?
Preloadλ νμ¬ νμμ νμν 리μμ€λ₯Ό κ°λ₯ν ν 빨리 κ°μ Έμ€λλ‘ λΈλΌμ°μ μ μ§μνλ μ μΈμ κ°μ Έμ€κΈ°μ
λλ€. μ΄λ μ΄λ―Έμ§, κΈκΌ΄, μ€ν¬λ¦½νΈ λλ CSSλ JavaScriptλ₯Ό ν΅ν΄ λ‘λλλ μ€νμΌμνΈμ κ°μ΄ λΈλΌμ°μ μ μν΄ λ¦κ² λ°κ²¬λλ 리μμ€μ νΉν μ μ©ν©λλ€. μ΄λ¬ν 리μμ€λ₯Ό 미리 λ‘λν¨μΌλ‘μ¨ λ λλ§ μ°¨λ¨μ λ°©μ§νκ³ μΉμ¬μ΄νΈμ μΈμ§λ λ‘λ© μλλ₯Ό ν₯μμν¬ μ μμ΅λλ€.
Preloadλ μΈμ μ¬μ©νλμ?
preloadλ λ€μ κ²½μ°μ μ¬μ©νμΈμ:
- κΈκΌ΄: μ¬μ©μ μ μ κΈκΌ΄μ 미리 λ‘λνλ©΄ μ€νμΌμ΄ μ§μ λμ§ μμ ν μ€νΈ κΉλ°μ(FOUT) λλ 보μ΄μ§ μλ ν μ€νΈ κΉλ°μ(FOIT)μ λ°©μ§ν μ μμ΅λλ€.
- μ΄λ―Έμ§: μ€ν¬λ‘€ μμ΄ λ³Ό μ μλ λΆλΆμ μ΄λ―Έμ§λ₯Ό μ°μ μ μΌλ‘ λ‘λνλ©΄ λΉ λ₯΄κ² λ‘λλμ΄ μ΄κΈ° μ¬μ©μ κ²½νμ ν₯μμν΅λλ€.
- μ€ν¬λ¦½νΈ λ° μ€νμΌμνΈ: μ€μν CSS λλ JavaScript νμΌμ 미리 λ‘λνλ©΄ λ λλ§ μ°¨λ¨μ λ°©μ§ν©λλ€.
- λͺ¨λ λ° μΉ μ컀: λͺ¨λ λλ μΉ μ컀λ₯Ό 미리 λ‘λνλ©΄ μ ν리μΌμ΄μ μ λ°μμ±μ ν₯μμν¬ μ μμ΅λλ€.
Preload ꡬν λ°©λ²
HTML λ¬Έμμ <head>μ <link> νκ·Έλ₯Ό μ¬μ©νμ¬ preloadλ₯Ό ꡬνν μ μμ΅λλ€:
<link rel="preload" href="/fonts/myfont.woff2" as="font" type="font/woff2" crossorigin="anonymous">
<link rel="preload" href="/styles/critical.css" as="style">
<link rel="preload" href="/scripts/app.js" as="script">
<link rel="preload" href="/images/hero.jpg" as="image">
μ€λͺ :
rel="preload": λΈλΌμ°μ κ° λ¦¬μμ€λ₯Ό 미리 λ‘λν΄μΌ ν¨μ μ§μ ν©λλ€.href="/path/to/resource": 미리 λ‘λν 리μμ€μ URLμ λλ€.as="type": 미리 λ‘λλλ 리μμ€μ μ νμ μ§μ ν©λλ€(μ: font, style, script, image). The `as` attribute is mandatory and crucial for the browser to properly prioritize and handle the resource. μ¬λ°λ₯Έ `as` κ°μ μ¬μ©νλ©΄ λΈλΌμ°μ κ° μ μ ν μ½ν μΈ λ³΄μ μ μ± (CSP)μ μ μ©νκ³ μ¬λ°λ₯ΈAcceptν€λλ₯Ό μ μ‘νλλ‘ λ³΄μ₯ν©λλ€.type="mime/type": (μ ν μ¬νμ΄μ§λ§ κΆμ₯λ¨) 리μμ€μ MIME μ νμ μ§μ ν©λλ€. μ΄λ λΈλΌμ°μ κ° νΉν κΈκΌ΄μ κ²½μ° μ¬λ°λ₯Έ 리μμ€ νμμ μ ννλ λ° λμμ΄ λ©λλ€.crossorigin="anonymous": (λ€λ₯Έ μλ³Έμμ λ‘λλλ κΈκΌ΄μ νμ) μμ²μ λν CORS λͺ¨λλ₯Ό μ§μ ν©λλ€. CDNμμ κΈκΌ΄μ λ‘λνλ κ²½μ° μ΄ μμ±μ΄ νμν κ°λ₯μ±μ΄ λμ΅λλ€.
μμ: κΈκΌ΄ 미리 λ‘λ
μΉμ¬μ΄νΈμμ 'OpenSans'λΌλ μ¬μ©μ μ μ κΈκΌ΄μ μ¬μ©νλ€κ³ μμν΄ λ³΄μΈμ. 미리 λ‘λνμ§ μμΌλ©΄ λΈλΌμ°μ λ CSS νμΌμ νμ±ν νμμΌ μ΄ κΈκΌ΄μ λ°κ²¬ν©λλ€. μ΄λ‘ μΈν΄ μ¬λ°λ₯Έ κΈκΌ΄λ‘ ν μ€νΈλ₯Ό λ λλ§νλ λ° μ§μ°μ΄ λ°μν μ μμ΅λλ€. κΈκΌ΄μ 미리 λ‘λν¨μΌλ‘μ¨ μ΄λ¬ν μ§μ°μ μ κ±°ν μ μμ΅λλ€.
<link rel="preload" href="/fonts/OpenSans-Regular.woff2" as="font" type="font/woff2" crossorigin="anonymous">
μμ: ν΅μ¬ CSS νμΌ λ―Έλ¦¬ λ‘λ
μΉμ¬μ΄νΈμ μ΄κΈ° 보기λ₯Ό λ λλ§νλ λ° νμμ μΈ ν΅μ¬ CSS νμΌμ΄ μλ€λ©΄, μ΄λ₯Ό 미리 λ‘λν¨μΌλ‘μ¨ μΈμ§ μ±λ₯μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€.
<link rel="preload" href="/styles/critical.css" as="style">
Preload λͺ¨λ² μ¬λ‘
- ν΅μ¬ 리μμ€ μ°μ μμ μ§μ : μ΄κΈ° νμ΄μ§ λ‘λμ νμμ μΈ λ¦¬μμ€λ§ 미리 λ‘λνμΈμ. preloadλ₯Ό κ³Όλνκ² μ¬μ©νλ©΄ μ±λ₯μ λΆμ μ μΈ μν₯μ λ―ΈμΉ μ μμ΅λλ€.
- μ¬λ°λ₯Έ
asμμ± μ¬μ©: λΈλΌμ°μ κ° λ¦¬μμ€λ₯Ό μ¬λ°λ₯΄κ² μ²λ¦¬νλλ‘ νμ μ¬λ°λ₯Έasμμ±μ μ§μ νμΈμ. typeμμ± ν¬ν¨: λΈλΌμ°μ κ° μ¬λ°λ₯Έ 리μμ€ νμμ μ ννλ λ° λμμ΄ λλλ‘typeμμ±μ ν¬ν¨νμΈμ.- ν¬λ‘μ€ μ€λ¦¬μ§ κΈκΌ΄μ
crossoriginμ¬μ©: λ€λ₯Έ μλ³Έμμ κΈκΌ΄μ λ‘λν λcrossoriginμμ±μ ν¬ν¨ν΄μΌ ν©λλ€. - μ±λ₯ ν μ€νΈ: λ‘λ© μκ°μ μ€μ λ‘ κ°μ νκ³ μλμ§ νμΈνκΈ° μν΄ νμ preloadμ μ±λ₯ μν₯μ ν μ€νΈνμΈμ. Google PageSpeed Insights λλ WebPageTestμ κ°μ λꡬλ₯Ό μ¬μ©νμ¬ μν₯μ μΈ‘μ νμΈμ.
Prefetch: λ―Έλμ νμμ± μμΈ‘
Prefetchλ 무μμΈκ°μ?
Prefetchλ ν₯ν νμ λλ μνΈ μμ©μ νμν κ°λ₯μ±μ΄ μλ 리μμ€λ₯Ό κ°μ Έμ€λλ‘ λΈλΌμ°μ μ μ§μνλ 리μμ€ ννΈμ
λλ€. νμ¬ νμ΄μ§μ νμν 리μμ€μ μ€μ μ λλ preloadμ λ¬λ¦¬, prefetchλ μ¬μ©μμ λ€μ μμ§μμ μμΈ‘ν©λλ€. μ΄λ νμ νμ΄μ§ λλ κ΅¬μ± μμμ λ‘λ© μλλ₯Ό κ°μ νλ λ° νΉν μ μ©ν©λλ€.
Prefetchλ μΈμ μ¬μ©νλμ?
prefetchλ λ€μ κ²½μ°μ μ¬μ©νμΈμ:
- λ€μ νμ΄μ§ 리μμ€: μ¬μ©μκ° λ€μ νΉμ νμ΄μ§λ‘ μ΄λν κ°λ₯μ±μ΄ λλ€λ©΄ ν΄λΉ 리μμ€λ₯Ό 미리 κ°μ Έμ€μΈμ.
- μ¬μ©μ μνΈ μμ©μ μν 리μμ€: μ¬μ©μ μνΈ μμ©μ΄ νΉμ 리μμ€(μ: λͺ¨λ¬ μ°½, μμ)μ λ‘λ©μ νΈλ¦¬κ±°νλ κ²½μ° ν΄λΉ 리μμ€λ₯Ό 미리 κ°μ Έμ€μΈμ.
- λ€λ₯Έ νμ΄μ§μ μ΄λ―Έμ§ λ° μμ°: μ¬μ©μκ° λ°©λ¬Έν κ°λ₯μ±μ΄ μλ λ€λ₯Έ νμ΄μ§μ μ¬μ©λλ μ΄λ―Έμ§ λλ μμ°μ 미리 λ‘λνμΈμ.
Prefetch ꡬν λ°©λ²
HTML λ¬Έμμ <head>μ <link> νκ·Έλ₯Ό μ¬μ©νμ¬ prefetchλ₯Ό ꡬνν μ μμ΅λλ€:
<link rel="prefetch" href="/page2.html">
<link rel="prefetch" href="/images/product.jpg">
<link rel="prefetch" href="/scripts/modal.js">
μ€λͺ :
rel="prefetch": λΈλΌμ°μ κ° λ¦¬μμ€λ₯Ό 미리 κ°μ ΈμμΌ ν¨μ μ§μ ν©λλ€.href="/path/to/resource": 미리 κ°μ Έμ¬ 리μμ€μ URLμ λλ€.
μμ: λ€μ νμ΄μ§ 리μμ€ λ―Έλ¦¬ κ°μ Έμ€κΈ°
μΉμ¬μ΄νΈμ λ€λ¨κ³ μμκ³Ό κ°μ λͺ νν μ¬μ©μ νλ¦μ΄ μλ κ²½μ°, μ¬μ©μκ° νμ¬ λ¨κ³μ μμ λ λ€μ λ¨κ³μ νμν 리μμ€λ₯Ό 미리 κ°μ Έμ¬ μ μμ΅λλ€.
<link rel="prefetch" href="/form/step2.html">
μμ: λͺ¨λ¬ μ°½μ μν 리μμ€ λ―Έλ¦¬ κ°μ Έμ€κΈ°
μΉμ¬μ΄νΈκ° μ΄λ¦΄ λ μΆκ° 리μμ€λ₯Ό λ‘λνλ λͺ¨λ¬ μ°½μ μ¬μ©νλ κ²½μ°, ν΄λΉ 리μμ€λ₯Ό 미리 κ°μ Έμ μνν μ¬μ©μ κ²½νμ 보μ₯ν μ μμ΅λλ€.
<link rel="prefetch" href="/scripts/modal.js">
<link rel="prefetch" href="/styles/modal.css">
Prefetch λͺ¨λ² μ¬λ‘
- μ μ€νκ² μ¬μ©: prefetchλ μ¬μ©μκ° λ―Έλ¦¬ κ°μ Έμ¨ 리μμ€λ₯Ό νμλ‘ νμ§ μλλΌλ λμνκ³Ό 리μμ€λ₯Ό μλΉν μ μμΌλ―λ‘ μ μ€νκ² μ¬μ©ν΄μΌ ν©λλ€.
- κ°λ₯μ± μλ νμ μ°μ μμ μ§μ : λ°μν κ°λ₯μ±μ΄ κ°μ₯ λμ νμ΄μ§ λλ μνΈ μμ©μ μν 리μμ€λ₯Ό 미리 κ°μ Έμ€μΈμ.
- λ€νΈμν¬ μ‘°κ±΄ κ³ λ €: prefetchλ μμ μ μ΄κ³ λΉ λ₯Έ μΈν°λ· μ°κ²°μ κ°μ§ μ¬μ©μμκ² κ°μ₯ μ ν©ν©λλ€. λ리거λ μ’ λμ μ°κ²°μ μ¬μ©νλ μ¬μ©μμκ²λ λμ©λ 리μμ€λ₯Ό 미리 κ°μ Έμ€μ§ λ§μΈμ. Network Information APIλ₯Ό μ¬μ©νμ¬ μ¬μ©μμ μ°κ²° μ νμ κ°μ§νκ³ κ·Έμ λ°λΌ prefetchingμ μ‘°μ ν μ μμ΅λλ€.
- μ±λ₯ λͺ¨λν°λ§: μΉμ¬μ΄νΈ μ±λ₯μ λν prefetchμ μν₯μ λͺ¨λν°λ§νμ¬ μ μ΄μ μ μ 곡νλμ§ νμΈνμΈμ.
- λμ Prefetching νμ©: μ¬μ©μ νλ λ° λΆμ λ°μ΄ν°λ₯Ό κΈ°λ°μΌλ‘ λμ μΌλ‘ prefetchingμ ꡬννμΈμ. μλ₯Ό λ€μ΄, νμ¬ νμ΄μ§μ μλ μ¬μ©μκ° μμ£Ό λ°©λ¬Ένλ νμ΄μ§μ 리μμ€λ₯Ό 미리 κ°μ Έμ€μΈμ.
Preconnect: μ‘°κΈ° μ°κ²° μ€μ
Preconnectλ 무μμΈκ°μ?
Preconnectλ μ€μν μλνν° μλ²μ λν μ‘°κΈ° μ°κ²°μ μ€μ ν μ μλ 리μμ€ ννΈμ
λλ€. μ°κ²°μ μ€μ νλ λ°λ DNS μ‘°ν, TCP νΈλμ
°μ΄ν¬, TLS νμκ³Ό κ°μ μ¬λ¬ λ¨κ³κ° ν¬ν¨λ©λλ€. μ΄λ¬ν λ¨κ³λ ν΄λΉ μλ²μμ 리μμ€λ₯Ό λ‘λνλ λ° μλΉν μ§μ°μ μΆκ°ν μ μμ΅λλ€. Preconnectλ₯Ό μ¬μ©νλ©΄ μ΄λ¬ν λ¨κ³λ₯Ό λ°±κ·ΈλΌμ΄λμμ μμν μ μμΌλ―λ‘ λΈλΌμ°μ κ° μλ²μμ 리μμ€λ₯Ό κ°μ ΈμμΌ ν λ μ°κ²°μ΄ μ΄λ―Έ μ€μ λμ΄ μμ΅λλ€.
Preconnectλ μΈμ μ¬μ©νλμ?
preconnectλ λ€μ κ²½μ°μ μ¬μ©νμΈμ:
- μλνν° μλ²: κΈκΌ΄, CDN, API λλ μΉμ¬μ΄νΈκ° μμ‘΄νλ κΈ°ν 리μμ€λ₯Ό νΈμ€ν νλ μλ².
- μμ£Ό μ¬μ©λλ μλ²: μΉμ¬μ΄νΈκ° μμ£Ό μ‘μΈμ€νλ μλ².
Preconnect ꡬν λ°©λ²
HTML λ¬Έμμ <head>μ <link> νκ·Έλ₯Ό μ¬μ©νμ¬ preconnectλ₯Ό ꡬνν μ μμ΅λλ€:
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="preconnect" href="https://cdn.example.com">
μ€λͺ :
rel="preconnect": λΈλΌμ°μ κ° μλ²μ 미리 μ°κ²°ν΄μΌ ν¨μ μ§μ ν©λλ€.href="https://example.com": 미리 μ°κ²°ν μλ²μ URLμ λλ€.crossorigin: (μ ν μ¬νμ΄μ§λ§ CORSλ‘ λ‘λλλ 리μμ€μλ νμ) μ°κ²°μ CORSκ° νμν¨μ μ§μ ν©λλ€.
μμ: Google Fontsμ 미리 μ°κ²°
μΉμ¬μ΄νΈκ° Google Fontsλ₯Ό μ¬μ©νλ κ²½μ°, https://fonts.gstatic.comμ 미리 μ°κ²°νλ©΄ κΈκΌ΄ λ‘λ© μ§μ° μκ°μ ν¬κ² μ€μΌ μ μμ΅λλ€.
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
Google Fontsλ CORSλ₯Ό μ¬μ©νμ¬ κΈκΌ΄μ μ 곡νλ―λ‘ μ¬κΈ°μ `crossorigin` μμ±μ΄ μ€μν©λλ€.
μμ: CDNμ 미리 μ°κ²°
μΉμ¬μ΄νΈκ° CDNμ μ¬μ©νμ¬ μ μ μμ°μ μ 곡νλ κ²½μ°, CDNμ νΈμ€νΈ μ΄λ¦μ 미리 μ°κ²°νλ©΄ ν΄λΉ μμ° λ‘λ©μ μ§μ° μκ°μ μ€μΌ μ μμ΅λλ€.
<link rel="preconnect" href="https://cdn.example.com">
Preconnect λͺ¨λ² μ¬λ‘
- νλͺ νκ² μ¬μ©: λ무 λ§μ μλ²μ 미리 μ°κ²°νλ©΄ λΈλΌμ°μ κ° μ°κ²°μ μ€μ νλ λ° μ νλ 리μμ€λ₯Ό κ°μ§λ―λ‘ μ€μ λ‘ μ±λ₯μ΄ μ νλ μ μμ΅λλ€.
- μ€μ μλ² μ°μ μμ μ§μ : μΉμ¬μ΄νΈ μ±λ₯μ κ°μ₯ μ€μν μλ²μ 미리 μ°κ²°νμΈμ.
- DNS-Prefetch κ³ λ €: μμ ν 미리 μ°κ²°ν νμλ μμ§λ§ DNSλ₯Ό μΌμ° νμΈνκ³ μΆμ μλ²μ κ²½μ°
<link rel="dns-prefetch" href="https://example.com">λ₯Ό μ¬μ©νλ κ²μ κ³ λ €νμΈμ. DNS-prefetchλ DNS μ‘°νλ§ μννλ©°, μ΄λ μ 체 preconnectλ³΄λ€ λ¦¬μμ€ μ§μ½μ μ΄μ§ μμ΅λλ€. - μ±λ₯ ν μ€νΈ: νμ preconnectμ μ±λ₯ μν₯μ ν μ€νΈνμ¬ μ μ΄μ μ μ 곡νλμ§ νμΈνμΈμ.
- λ€λ₯Έ 리μμ€ ννΈμ κ²°ν©: preload λ° prefetchμ ν¨κ» preconnectλ₯Ό μ¬μ©νμ¬ μ΅μ μ μ±λ₯μ λ¬μ±νμΈμ. μλ₯Ό λ€μ΄, κΈκΌ΄μ νΈμ€ν νλ μλ²μ 미리 μ°κ²°ν λ€μ κΈκΌ΄ νμΌμ 미리 λ‘λνμΈμ.
μ΅μ μ μ±λ₯μ μν 리μμ€ ννΈ κ²°ν©
리μμ€ ννΈμ μ§μ ν νμ μ λ΅μ μΌλ‘ κ²°ν©νλ λ° μμ΅λλ€. λ€μμ μ€μ©μ μΈ μμμ λλ€:
CDNμ νΈμ€ν λ μ¬μ©μ μ μ κΈκΌ΄μ μ¬μ©νκ³ μ€μν JavaScript νμΌμ λ‘λνλ μΉμ¬μ΄νΈλ₯Ό μμν΄ λ³΄μΈμ.
- CDNμ 미리 μ°κ²°: κΈκΌ΄ λ° JavaScript νμΌμ νΈμ€ν
νλ CDNμ μ‘°κΈ° μ°κ²°μ μ€μ ν©λλ€.
<link rel="preconnect" href="https://cdn.example.com" crossorigin> - κΈκΌ΄ 미리 λ‘λ: FOUT λ°©μ§λ₯Ό μν΄ κΈκΌ΄ λ‘λ©μ μ°μ μμλ₯Ό μ§μ ν©λλ€.
<link rel="preload" href="https://cdn.example.com/fonts/myfont.woff2" as="font" type="font/woff2" crossorigin="anonymous"> - JavaScript νμΌ λ―Έλ¦¬ λ‘λ: νμν λ JavaScript νμΌμ μ¬μ©ν μ μλλ‘ λ‘λ©μ μ°μ μμλ₯Ό μ§μ ν©λλ€.
<link rel="preload" href="https://cdn.example.com/scripts/app.js" as="script">
리μμ€ ννΈ λΆμ λꡬ
μ¬λ¬ λκ΅¬κ° λ¦¬μμ€ ννΈμ ν¨μ¨μ±μ λΆμνλ λ° λμμ μ€ μ μμ΅λλ€:
- Google PageSpeed Insights: 리μμ€ ννΈ μ¬μ©μ ν¬ν¨νμ¬ μΉμ¬μ΄νΈ μ±λ₯ μ΅μ νλ₯Ό μν κΆμ₯ μ¬νμ μ 곡ν©λλ€.
- WebPageTest: λ€μν μμΉμ λ€νΈμν¬ μ‘°κ±΄μμ μΉμ¬μ΄νΈ μ±λ₯μ ν μ€νΈν μ μμ΅λλ€.
- Chrome DevTools: Chrome DevToolsμ λ€νΈμν¬ ν¨λμ 리μμ€ λ‘λ© μκ°μ 보μ¬μ£Όλ©° μ΅μ ν κΈ°νλ₯Ό μλ³νλ λ° λμμ μ€λλ€.
- Lighthouse: μΉ νμ΄μ§ νμ§ ν₯μμ μν μλνλ λꡬμ λλ€. μ±λ₯, μ κ·Όμ±, νλ‘κ·Έλ μλΈ μΉ μ±, SEO λ±μ λν κ°μ¬ κΈ°λ₯μ μ 곡ν©λλ€.
νν ν¨μ κ³Ό νΌνλ λ°©λ²
- 리μμ€ ννΈ κ³Όμ©: λ무 λ§μ 리μμ€ ννΈλ₯Ό μ¬μ©νλ©΄ μ±λ₯μ λΆμ μ μΈ μν₯μ λ―ΈμΉ μ μμ΅λλ€. κ°μ₯ μ€μν 리μμ€μ μ§μ€νμΈμ.
- μλͺ»λ
asμμ±: preloadμ μλͺ»λasμμ±μ μ¬μ©νλ©΄ 리μμ€κ° μ¬λ°λ₯΄κ² λ‘λλμ§ μμ μ μμ΅λλ€. - CORS 무μ: λ€λ₯Έ μλ³Έμμ 리μμ€λ₯Ό λ‘λν λ
crossoriginμμ±μ ν¬ν¨νμ§ μμΌλ©΄ λ‘λ© μ€λ₯κ° λ°μν μ μμ΅λλ€. - μ±λ₯ ν μ€νΈ λΆμ‘±: 리μμ€ ννΈκ° μ μ΄μ μ μ 곡νλμ§ νμΈνκΈ° μν΄ νμ μ±λ₯ μν₯μ ν μ€νΈνμΈμ.
- μλͺ»λ κ²½λ‘: 리μμ€ ννΈμ μ§μ λ λͺ¨λ νμΌ κ²½λ‘μ URLμ΄ μ¬λ°λ₯Έμ§ λ€μ νμΈνμΈμ. κ·Έλ μ§ μμΌλ©΄ μ€λ₯κ° λ°μν©λλ€.
리μμ€ ννΈμ λ―Έλ
리μμ€ ννΈλ λΈλΌμ°μ μ¬μμ μλ‘μ΄ κΈ°λ₯κ³Ό κ°μ μ¬νμ΄ μ§μμ μΌλ‘ μΆκ°λλ©΄μ λμμμ΄ λ°μ νκ³ μμ΅λλ€. 리μμ€ ννΈμ μ΅μ κ°λ° λν₯μ νμ
νλ©΄ μΉμ¬μ΄νΈ μ±λ₯μ λμ± μ΅μ νν μ μμ΅λλ€. μλ₯Ό λ€μ΄, modulepreloadλ JavaScript λͺ¨λμ 미리 λ‘λνκΈ° μν΄ νΉλ³ν μ€κ³λ μλ‘μ΄ λ¦¬μμ€ ννΈμ
λλ€. λν 리μμ€ ννΈμ `priority` μμ±μ μ¬μ©νλ©΄ λ€λ₯Έ 리μμ€μ λν 리μμ€μ μ°μ μμλ₯Ό μ§μ ν μ μμ΅λλ€. μ΄λ¬ν κΈ°λ₯μ λν λΈλΌμ°μ μ§μμ μμ§ λ°μ μ€μ΄λ―λ‘ κ΅¬ννκΈ° μ μ νΈνμ±μ νμΈνμΈμ.
κ²°λ‘
리μμ€ ννΈλ μΉμ¬μ΄νΈ λ‘λ© μκ°μ μ΅μ ννκ³ μ¬μ©μ κ²½νμ κ°μ νκΈ° μν κ°λ ₯ν λꡬμ
λλ€. preload, prefetch, preconnectλ₯Ό μ λ΅μ μΌλ‘ μ¬μ©νμ¬ λΈλΌμ°μ μ ν΅μ¬ 리μμ€λ₯Ό 미리 μλ € μ§μ° μκ°μ μ€μ΄κ³ μΉμ¬μ΄νΈμ μΈμ§ μ±λ₯μ ν₯μμν¬ μ μμ΅λλ€. ν΅μ¬ 리μμ€λ₯Ό μ°μ μνκ³ , 리μμ€ ννΈλ₯Ό μ μ€νκ² μ¬μ©νλ©°, λ³κ²½ μ¬νμ μ±λ₯ μν₯μ νμ ν
μ€νΈν΄μΌ ν©λλ€. μ΄ κΈμ μ€λͺ
λ λͺ¨λ² μ¬λ‘λ₯Ό λ°λ₯΄λ©΄ μΉμ¬μ΄νΈ μ±λ₯μ ν¬κ² ν₯μμν€κ³ μ μΈκ³ μ¬μ©μμκ² λ λμ κ²½νμ μ 곡ν μ μμ΅λλ€.