본문으둜 κ±΄λ„ˆλ›°κΈ°

πŸ‘‰ HTML

πŸ₯• <script>, <script async>, <script defer> μ‚¬μ΄μ˜ 차이점​

<script>λŠ” HTML νŒŒμ‹±μ΄ μ€‘λ‹¨λ˜κ³ , 슀크립트λ₯Ό μ¦‰μ‹œ κ°€μ Έμ˜€κ³  μ‹€ν–‰λ˜λ©°, 슀크립트 μ‹€ν–‰ ν›„ HTML νŒŒμ‹±μ΄ λ‹€μ‹œ μ‹œμž‘λ©λ‹ˆλ‹€.

<script async>λŠ” HTML νŒŒμ‹±κ³Ό λ³‘λ ¬μ μœΌλ‘œ κ°€μ Έμ˜€λ©°, μ‚¬μš© κ°€λŠ₯ν•  λ•Œ μ¦‰μ‹œ μ‹€ν–‰λ©λ‹ˆλ‹€.(μ•„λ§ˆ HTML νŒŒμ‹±μ΄ λλ‚˜κΈ° μ „) μŠ€ν¬λ¦½νŠΈκ°€ νŽ˜μ΄μ§€μ˜ λ‹€λ₯Έ μŠ€ν¬λ¦½νŠΈλ“€κ³Ό 독립적인 경우 asyncλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. (ex. analytics)

<script defer>λŠ” HTML νŒŒμ‹±κ³Ό λ³‘λ ¬μ μœΌλ‘œ κ°€μ Έμ˜€μ§€λ§Œ, νŽ˜μ΄μ§€ νŒŒμ‹±μ΄ λλ‚˜λ©΄ μ‹€ν–‰λ©λ‹ˆλ‹€. 이것이 μ—¬λŸ¬κ°œ μžˆλŠ” 경우, 각 μŠ€ν¬λ¦½νŠΈλŠ” νŽ˜μ΄μ§€μ— λ“±μž₯ν•œ μˆœμ„œλŒ€λ‘œ μ‹€ν–‰λ©λ‹ˆλ‹€. μŠ€ν¬λ¦½νŠΈκ°€ μ™„μ „νžˆ νŒŒμ‹±λœ DOM에 μ˜μ‘΄λ˜λŠ” 경우 defer 속성은 슀크립트λ₯Ό μ‹€ν–‰ν•˜κΈ° 전에 HTML이 μ™„μ „νžˆ νŒŒμ‹±λ˜λ„λ‘ ν•˜λŠ”λ° μœ μš©ν•©λ‹ˆλ‹€. <body>의 끝뢀뢄에 일반 <script>λ₯Ό λ‘λŠ” 것과 별 차이가 μ—†μŠ΅λ‹ˆλ‹€. defer μŠ€ν¬λ¦½νŠΈλŠ” document.writeλ₯Ό ν¬ν•¨ν•˜λ©΄ μ•ˆλ©λ‹ˆλ‹€.

μ£Όμ˜ν•  사항은 src 속성이 μ—†λŠ” 슀크립트 νƒœκ·ΈλŠ” async와 defer속성이 λ¬΄μ‹œλ©λ‹ˆλ‹€.

<head> μ•ˆμ— <link>λ₯Ό λ„£λŠ” μ΄μœ β€‹

λΈŒλΌμš°μ € λ Œλ”λ§μ— λŒ€ν•œ 뢀뢄인데 νŽ˜μ΄μ§€κ°€ 처음 λ‘œλ“œλ˜λ©΄ HTMLκ³Ό CSSκ°€ λ™μ‹œμ— νŒŒμ‹±λ©λ‹ˆλ‹€. HTML은 DOM을 λ§Œλ“€κ³  CSSλŠ” CSSOM을 λ§Œλ“­λ‹ˆλ‹€. 두 가지 λͺ¨λ‘ μ›Ήμ‚¬μ΄νŠΈμ—μ„œ μ‹œκ°μ μΈ 뢀뢄을 λ§Œλ“œλŠ”λ° ν•„μš”ν•˜λ―€λ‘œ λΉ λ₯Έ first meaning paintλ₯Ό κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€. 이 점진적 λ Œλ”λ§μ€ μ‚¬μ΄νŠΈμ˜ μ„±λŠ₯ μ μˆ˜μ—μ„œ μΈ‘μ •λ˜λŠ” μ‚¬μ΄νŠΈ μ΅œμ ν™”μ˜ λ²”μ£Όμž…λ‹ˆλ‹€. κ·Έλž˜μ„œ λ¬Έμ„œ μ΅œν•˜λ‹¨μ— μŠ€νƒ€μΌμ‹œνŠΈλ₯Ό λ‘λŠ” 것은 λ§Žμ€ λΈŒλΌμš°μ €μ—μ„œ 점진적 λ Œλ”λ§μ„ κΈˆμ§€ν•˜κ²Œ λ˜λŠ” κ²ƒμž…λ‹ˆλ‹€. λͺ‡λͺ‡ λΈŒλΌμš°μ €λŠ” μŠ€νƒ€μΌμ΄ λ³€κ²½λ˜λ©΄ νŽ˜μ΄μ§€μ˜ μš”μ†Œλ₯Ό λ‹€μ‹œ κ·Έλ¦¬λŠ” 것을 ν”Όν•˜κΈ° μœ„ν•΄ λ Œλ”λ§μ„ μ°¨λ‹¨ν•©λ‹ˆλ‹€. κ·Έλ ‡κ²Œλ˜λ©΄ μ‚¬μš©μžλŠ” 빈 ν•˜μ–€ νŽ˜μ΄μ§€λ₯Ό λ³΄κ²Œλ©λ‹ˆλ‹€.

</body> 직전에 <script>λ₯Ό λ„£λŠ” μ΄μœ β€‹

<script>λŠ” λ‹€μš΄λ‘œλ“œλ˜κ³  μ‹€ν–‰λ˜λŠ” λ™μ•ˆ HTML νŒŒμ‹±μ„ μ°¨λ‹¨ν•©λ‹ˆλ‹€. 슀크립트λ₯Ό 맨 μ•„λž˜μ— 두면 HTML을 λ¨Όμ € νŒŒμ‹±ν•˜λ©΄μ„œ μ‚¬μš©μžμ—κ²Œ ν‘œμ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€. <script>λ₯Ό μ•„λž˜μͺ½μ— 두면, λΈŒλΌμš°μ € 전체 λ¬Έμ„œκ°€ νŒŒμ‹±λ  λ•ŒκΉŒμ§€ 슀크립트 λ‹€μš΄λ‘œλ“œλ₯Ό μ‹œμž‘ν•  수 μ—†λ‹€λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œν•˜λ©΄ DOM μš”μ†Œλ₯Ό μ‘°μž‘ν•΄μ•Όν•˜λŠ” μ½”λ“œκ°€ 였λ₯˜λ₯Ό λ°œμƒμ‹œν‚€μ§€ μ•Šκ³  전체 슀크립트λ₯Ό μ€‘μ§€μ‹œν‚€μ§€ μ•Šν‘λ‹ˆλ‹€. <head>에 <script>λ₯Ό λ„£μ–΄μ•Όν•˜λŠ” 경우, defer 속성을 μ‚¬μš©ν•˜λ©΄λ©λ‹ˆλ‹€. HTML을 νŒŒμ‹±ν•œ 후에 슀크립트λ₯Ό λ‹€μš΄λ‘œλ“œν•˜κ³  μ‹€ν–‰ν•˜λŠ” 것과 같은 νš¨κ³Όκ°€ μžˆμŠ΅λ‹ˆλ‹€.

πŸ₯• 점진적 λ Œλ”λ§(Progressive Rendering)이 λ¬΄μ—‡μΈκ°€μš”?​

μ½˜ν…μΈ λ₯Ό κ°€λŠ₯ν•œν•œ λΉ λ₯΄κ²Œ ν‘œμ‹œν•˜κΈ° μœ„ν•΄ μ›Ή νŽ˜μ΄μ§€μ˜ μ„±λŠ₯을 ν–₯μƒμ‹œν‚€λŠ” 데 μ‚¬μš©λ˜λŠ” κΈ°μˆ μž…λ‹ˆλ‹€.

  • 이미지 μ§€μ—°λ‘œλ”©
  • λ³΄μ΄λŠ” μ½˜ν…μΈ  μš°μ„ μˆœμœ„ μ„€μ •ν•˜μ—¬ κ°€λŠ₯ν•œ ν•œ 빨리 ν‘œμ‹œν•˜κΈ° μœ„ν•΄ μ‚¬μš©μž λΈŒλΌμš°μ €μ—μ„œ λ Œλ”λ§λ  νŽ˜μ΄μ§€μ— ν•„μš”ν•œ μ΅œμ†Œν•œμ˜ CSS/μ½˜ν…μΈ /슀크립트만 ν¬ν•¨ν•˜λ©΄ deferred 슀크립트λ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜ DOMContentLoaded/load 이벀트λ₯Ό μ‚¬μš©ν•˜μ—¬ λ‹€λ₯Έ λ¦¬μ†ŒμŠ€μ™€ λ‚΄μš©μ„ λ‘œλ“œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ°Έκ³ : https://zereight.tistory.com/773

πŸ₯• 이미지 νƒœκ·Έμ— srcset 속성을 μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μΈκ°€μš”? 이 μ†μ„±μ˜ 컨텐츠λ₯Ό μ‹€ν–‰ν•  λ•Œ λΈŒλΌμš°μ €μ˜ ν”„λ‘œμ„ΈμŠ€λ₯Ό μ„€λͺ…ν•˜μ„Έμš”.​

기기의 λ””μŠ€ν”Œλ ˆμ΄ λ„ˆλΉ„μ— 따라 λ‹€λ₯Έ 이미지λ₯Ό μ‚¬μš©μžμ—κ²Œ μ œκ³΅ν•˜λ €λŠ” 경우 srcset 속성을 μ‚¬μš©ν•©λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈμ˜ 해상도에 따라 λΈŒλΌμš°μ €μ— small, medium, large κ·Έλž˜ν”½μ„ ν‘œμ‹œν•˜λ„λ‘ μ§€μ‹œν•©λ‹ˆλ‹€.

srcsetλŠ” 화면이 μž‘μ€ κΈ°κΈ°μ—μ„œ λ°μŠ€ν¬νƒ‘ λ””μŠ€ν”Œλ ˆμ΄μ²˜λŸΌ 큰 이미지가 ν•„μš”ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μž‘μ€ 이미지 νŒŒμΌμ„ μ œκ³΅ν•˜λŠ” 문제λ₯Ό ν•΄κ²°ν•©λ‹ˆλ‹€.