๐ 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
์์ฑ์ด ๋ฌด์๋ฉ๋๋ค.
๐ฅ ์ ์ผ๋ฐ์ ์ผ๋ก CSS <link>
ํ๊ทธ๋ฅผ <head></head>
ํ๊ทธ ์ฌ์ด์ ์์น์ํค๊ณ , JS <script>
ํ๊ทธ๋ฅผ </body>
์ง์ ์ ์์น์ํค๋ ๊ฒ์ด ์ข์ ๋ฐฉ๋ฒ์ธ๊ฐ์? ๋ค๋ฅธ ์์ธ์ ์ธ ์ํฉ์ ์๊ณ ์๋์?โ
<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
๋ ํ๋ฉด์ด ์์ ๊ธฐ๊ธฐ์์ ๋ฐ์คํฌํ ๋์คํ๋ ์ด์ฒ๋ผ ํฐ ์ด๋ฏธ์ง๊ฐ ํ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ์์ ์ด๋ฏธ์ง ํ์ผ์ ์ ๊ณตํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.