๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

๐Ÿ‘‰ 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๋Š” ํ™”๋ฉด์ด ์ž‘์€ ๊ธฐ๊ธฐ์—์„œ ๋ฐ์Šคํฌํƒ‘ ๋””์Šคํ”Œ๋ ˆ์ด์ฒ˜๋Ÿผ ํฐ ์ด๋ฏธ์ง€๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ž‘์€ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ์ œ๊ณตํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.