์๋ฐ์คํฌ๋ฆฝํธ์ ๐Async์ Defer์ ์๋ฏธ์ ์ฐจ์ด๋ฅผ ์ฒ!์ฒ! ์ค๋ช ํด๋ณด์
- 1>์คํฌ๋ฆฝํธ ํ๊ทธ๋ฅผ ํค๋ ํ๊ทธ์ ํฌํจํ๋ฉด HTML์ Parsingํ๋ค ์คํฌ๋ฆฝํธ ํ๊ทธ๋ฅผ ๋ง๋๋ฉด blocked ๋จ๊ณ์ ๋ค์ด๊ฐ Parsing์ ์ ์ ๋ฉ์ถ๊ณ 1>JS ํ์ผ์ ์๋ฒ์์ ๋ค์ด๋ฐ์ ํ 2> ๊ทธ ํ์ผ์ ์คํํ๊ณ ๋ค์ Parsing์ ํ๋ ๋ถ๋ถ์ผ๋ก ๋์ด๊ฐ๋ค.
- ๋จ์ ์ JS ํ์ผ์ด ๋๋ฌด ํฌ๊ฑฐ๋ ์ธํฐ๋ท์ด ๋๋ฆฐ ํ๊ฒฝ์ด๋ฉด ์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ๋ฅผ ๋ณด๊ธฐ๊น์ง ์ค๋ ์๊ฐ์ด ์์๋๋ค๋ ์ ์ด๋ค.
=> ์ฆ, ์คํฌ๋ฆฝํธ ํ๊ทธ๋ฅผ ํค๋ ํ๊ทธ ๋ด๋ถ์ ํฌํจ์ํค๋ ๋ฐฉ์์ ์ข์ง ์์ ๋ฐฉ์์ด๋ค.
- 2>์คํฌ๋ฆฝํธ ํ๊ทธ๋ฅผ ๋ฐ๋ ํ๊ทธ ์ง์ ์ ํฌํจํ๋ฉด HTML์ Parsingํ๋ฉด์ page๊ฐ ๋ชจ๋ ์ค๋น๋ ์ดํ์ ์คํฌ๋ฆฝํธ ํ๊ทธ๋ฅผ ๋ง๋๊ฒ ๋์ด ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ํจ์นญํ๊ณ ์คํํ๊ฒ๋๋ค.
- ์ด ๋ฐฉ์์ ์ฅ์ ์ ์ฌ์ฉ์๋ค์ด JS ํ์ผ์ ๋ฐ๊ธฐ ์ ์ ํ์ด์ง๊ฐ ์ด๋ฏธ ์ค๋น๋์ด ์ฌ์ฉ์๋ ๊ธฐ๋ณธ์ ์ธ HTML ์ปจํ ์ธ ๋ฅผ ๋นจ๋ฆฌ ๋ณผ ์ ์๊ฒ ๋๋ค.
- ๋จ์ , ๋ง์ฝ ์น์ฌ์ดํธ๊ฐ JS์ ์์กด์ ์ธ ์ํ(EX> ์ฌ์ฉ์๊ฐ ์๋ฏธ์๋ ์ปจํ ์ธ ๋ฅผ ๋ณด๊ธฐ ์ํด 1.JS๋ฅผ ํตํด ์๋ฒ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ ๋ฐฉ์ 2. DOM ์์๋ฅผ ๊พธ๋ฉฐ์ค์ผํ๋ ๋ฑ..)๋ผ๋ฉด ์ฌ์ฉ์๊ฐ ์ ์์ ์ธ ํ์ด์ง๋ฅผ ๋ณด๊ธฐ ์ ๊น์ง JS ํ์ผ ํ์นญ์ ๋๊ธฐํด์ผํ๋ ์๊ฐ์ด ๊ธธ์ด์ง๋ค.
async ์ดํธ๋ฆฌ๋ทฐํธ
๋ฅผ ๊ฐ์ง ์คํฌ๋ฆฝํธ ํ๊ทธ๋ฅผ ํค๋ ํ๊ทธ์ ํฌํจ
- async๋ ๋ถ๋ฆฌ์ธ ํ์ ์์ฑ์ผ๋ก ์ ์ธํ๋ ๊ฒ๋ง์ผ๋ก๋ TRUE๋ก ์ค์ ๋์ด ์ฌ์ฉํ ์๊ฐ ์๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ HTML์ ๋ค์ด๋ฐ์ Parsingํ๋ค๊ฐ
async ์์ฑ ๊ฐ
์ ์ง๋ script ํ๊ทธ๋ฅผ ๋ง๋๋ฉด ๋ณ๋ ฌ๋ก JS ํ์ผ์ ํจ์นญํ๋ผ๋ ๋ช ๋ น์ ํ๊ณ ๋ค์ Parsing ์งํํ๋ค JSํ์ผ ํจ์นญ์ด ์๋ฃ๋๋ ์๊ฐ Parsing์ ๋ฉ์ถ๊ณ JSํ์ผ์ ์คํํ ๋ค ๋๋จธ์ง html ํ์ฑํ๋ค.- ์ฅ์ , ๋ฐ๋ ํ๊ทธ ์ง์ ์ ์คํฌ๋ฆฝํธ ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ๋ณด๋จ Feching์ด Parsing ํ๋๋์ ๋ณ๋ ฌ์ ์ผ๋ก ์ด๋ค์ง๊ธฐ ๋๋ฌธ์ JS ํ์ผ์ ๋ค์ด๋ก๋ ์๊ฐ์ ์ ์ฝํ ์ ์๋ค.
- ๋จ์ 1, JS ํ์ผ์ด HTML์ด Parsing ๋๊ธฐ ์ ์ ์คํ์ด ๋๊ธฐ ๋๋ฌธ์ ์๋ฅผ๋ค์ด JS ํ์ผ์ด ์ฟผ๋ฆฌ ์ ๋ ํฐ๋ฅผ ์ด์ฉํด ๋ ์์๋ฅผ ์กฐ์ํ๋๋ก ๋์ด์๋ค๋ฉด ์กฐ์ํ๋ ค๋ ์์ ์ ํ์ฑํ์ง ๋ชปํ HTML์ ์์๋ฅผ ์ ํํ๊ฒ ๋์ด ์ ์ ๋์ด์์ ์์์ ๋ํ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ค.
- ๋จ์ 2, ์ฌ์ ํ HTML์ Parsingํ๋ ๋์ค์ JS ํ์ผ Feching์ด ์๋ฃ๋๋ฉด JS ํ์ผ์ ์คํํ๊ธฐ ์ํด์ ๋ฉ์ถ๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๊ฐ page๋ฅผ ๋ณด๋๋ฐ ๋ค์ ์๊ฐ์ด ์์๋ ์ ์๋ค.
defer ์์ฑ๊ฐ
์ ๊ฐ์ง ์คํฌ๋ฆฝํธ ํ๊ทธ๋ฅผ ํค๋ ํ๊ทธ์ ํฌํจ
- defer ์ญ์ ๋ถ๋ฆฌ์ธ ํ์ ์์ฑ์ผ๋ก ์ ์ธํ๋ ๊ฒ๋ง์ผ๋ก๋ TRUE๋ก ์ค์ ๋์ด ์ฌ์ฉํ ์๊ฐ ์๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ HTML์ ๋ค์ด๋ฐ์ Parsingํ๋ค๊ฐ
defer ์์ฑ ๊ฐ
์ ์ง๋ script ํ๊ทธ๋ฅผ ๋ง๋๋ฉด ๋ณ๋ ฌ๋ก JS ํ์ผ์ Fechingํ๋ผ๋ ๋ช ๋ น๋ง ํ๊ณ HTML์ ๋๊น์ง Parsingํ๊ณ HTML์ด Parsing ๋๋๋ ์๊ฐ Feching ๋ JS ํ์ผ์ ์คํํ๊ฒ ๋๋ค.- ์ฅ์ , defer์ HTML์ Parsingํ๋ ๋์ ํ์ํ JS ํ์ผ์ ๋ชจ๋ ๋ค์ด๋ก๋ํ ๋ค ๋ง์ง๋ง์ ์ ์๋ ์คํฌ๋ฆฝํธ์ ์์๋๋ก ์คํ๋๋ค.
=> Defer์ด ๊ฐ์ฅ ์ข์ ์ต์ ์ผ๋ก HTML์ Parsingํ๋ ๋์ ํ์ํ JS ํ์ผ์ '๋ชจ๋' Fechingํ์ฌ ์ฌ์ฉ์์๊ฒ Parsing์ ๋จผ์ ํด์ HTML ํ์ด์ง๋ฅผ ์ฆ์ ๋ณด์ฌ์ค ๋ค ๋ฐ๋ก ์ด์ด์ JS ํ์ผ์ ์คํ์ํฌ ์ ์๋ค.
async์ defer
๋น๊ต
async ์ต์
์ผ๋ก ๋ค์์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ค์ด๋ก๋ํ๋ฉด ๋จผ์ ๋ค์ด๋ก๋ํ JS ํ์ผ ์์๋ก ์คํํ๊ฒ ๋๋ค.
=> ์ฆ์ ์๋ ์คํฌ๋ฆฝํธ ํ๊ทธ ์์์๋ ์๊ด์์ด ๋ค์ด๋ก๋ ๋ JS ํ์ผ ์์ผ๋ก ์คํ์ด ๋๋ค.
defer๋ ์ต์
์ HTML์ Parsingํ๋ ๋์ ํ์ํ JS ํ์ผ์ ๋ชจ๋ ๋ค์ด๋ก๋ํ ๋ค์ ์ ์๋ ์คํฌ๋ฆฝํธ ํ๊ทธ ์์๋๋ก ์คํ์ด ๋๋ค.
=> ์ฆ, JS ํ์ผ์ ๋ชจ๋ ๋ค์ด๋ก๋ ํ ํ ๋ค์์ ์ ์๋ ์คํฌ๋ฆฝํธ ํ๊ทธ ์์์ JS ํ์ผ์ ์์๋๋ก ์คํํ๊ฒ ๋๋ค.
async์ defer
๊ณตํต์ ๊ณผ ์ฐจ์ด์
async์ defer
๋ ๋ชจ๋ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋ณ๋ ฌ์ ์ผ๋ก HTML Pasing๊ณผ ๋์์ JS ํ์ผ์ ๋ค์ด๋ก๋ํ๊ฒ ๋๋ค.async
๋ Pasing๊ณผ ๋์์ ๋ณ๋ ฌ์ ์ผ๋ก JS ํ์ผ๋ค์ ํจ์นญํ๋ฉฐ๋จผ์
ํจ์นญ๋ ์์๋๋ก JS ํ์ผ์ด ์คํ๋์ด์ ์คํ๋ ์์๊ฐ ๋ณด์ฅโdefer
๋ Pasing๊ณผ ๋์์ ๋ณ๋ ฌ์ ์ผ๋ก JS ํ์ผ์๋ชจ๋
ํจ์นญํ ๋ค HTML Pasing์ ๋ชจ๋ ๋ง์น ๋ค์ ์ ์ํ ์์๋๋ก JS ํ์ผ์ ์คํํ์ฌ
์คํ ์์๊ฐ ๋ณด์ฅโญ
- ์์ฑํ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๊ฐ๊ฐ์ ์คํฌ๋ฆฝํธ์ ์์กดํ์ง ์๊ณ ๋ ๋ฆฝ์ ์ผ๋ก Parsing๋์ด๋ ์๊ด์๋ค๋ฉด,
async ์ต์
์ ์ฌ์ฉํ์.- ๋จ, ์์ฑํ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์์์ ์์กด์ ์ด์ด์ ์ ์ํ ์คํฌ๋ฆฝํธ ํ๊ทธ ์์๋๋ก ์คํ ๋์ด์ผ ํ๋ค๋ฉด
async ์ต์
์ ์ง์ํ์- ์์ฑํ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๊ฐ๊ฐ์ ์คํฌ๋ฆฝํธ์ ์์กดํ์ฌ ํ๋์ ์คํฌ๋ฆฝํธ๊ฐ ํ์ฑ๋๊ณ ์คํ๋๊ธฐ๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๋ค๋ฉด,
defer ์ต์
์ ์ฌ์ฉํ์.- ์ด๋ ๊ฒ ์์ฑํ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ๊ฐ์ script ํ๊ทธ๋ค์ด ์ ์ํ ์์๋๋ก ์คํ๋๋์ด์ผ๋ง ํ๋ค๋ฉด ๋ฌด์กฐ๊ฑด
defer ์ต์
์ ์ฌ์ฉํ์.