Service Worker ๊ธฐ๋ฐ Event-Driven ๊ตฌ์กฐ ์ ํ์ ํตํ ๋ธ๋ผ์ฐ์ ๋ฆฌ์์ค ์ต์ ํ ๋ฐ ๋ณด์ ๊ฐํ
Unpacking Manifest V3: Chromeโs Big Extension Shakeup! ๐ ๏ธ
AI ์์ฝ
Context
Manifest V2์ Persistent Background Pages๋ก ์ธํ ์ง์์ ์ธ RAM ์ ์ ๋ฐ ๊ณผ๋ํ ๋ฉ๋ชจ๋ฆฌ ์๋น ๋ฌธ์ ๋ฐ์. Remotely Hosted Code ์คํ ํ์ฉ์ ๋ฐ๋ฅธ ๋ณด์ ์ทจ์ฝ์ ๊ณผ webRequest API ๊ธฐ๋ฐ์ ๋ฌด๋ถ๋ณํ ๋คํธ์ํฌ ๋ฐ์ดํฐ ์ ๊ทผ ์ ์ด ํ๊ณ ์ง๋ฉด.
Technical Solution
- Persistent Background Page๋ฅผ Stateless Service Worker๋ก ๋์ฒดํ์ฌ Event-Driven ๋ฐฉ์์ ๋ฆฌ์์ค ๊ด๋ฆฌ ๊ตฌํ
- webRequest API์ Blocking ๊ธฐ๋ฅ์ declarativeNetRequest API๋ก ์ ํํ์ฌ ๋ธ๋ผ์ฐ์ ๊ฐ ๋คํธ์ํฌ ํํฐ๋ง์ ์ง์ ์ํํ๋ ์ ์ธ์ ๊ตฌ์กฐ ์ฑํ
- ์๊ฒฉ ์ฝ๋ ์คํ์ ์ ๋ฉด ๊ธ์งํ๊ณ ๋ชจ๋ JavaScript๋ฅผ ํ์ฅ ํ๋ก๊ทธ๋จ ํจํค์ง ๋ด์ ํฌํจ์์ผ ์ ์ ๋ถ์ ๋ฐ ๊ฒํ ํ๋ก์ธ์ค ๊ฐํ
- ์ฝ๋ฐฑ ๊ธฐ๋ฐ API๋ฅผ Modern Promise ๊ธฐ๋ฐ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ์ฌ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ก์ง์ ์ผ๊ด์ฑ ํ๋ณด
- DOM ์ ๊ทผ์ด ํ์ํ ๋ฐฐ๊ฒฝ ์์ ์ฒ๋ฆฌ๋ฅผ ์ํด Offscreen Document API๋ฅผ ํตํ ํน์ ๋ชฉ์ ๋ ๋๋ง ๊ณ์ธต ๋ถ๋ฆฌ
์ค์ฒ ํฌ์ธํธ
- Service Worker ๋์ ์ ์ํ ์ ์ง ๋ถ๊ฐ(Stateless) ์ ์ฝ์ ๊ณ ๋ คํ์ฌ chrome.storage.local ๊ธฐ๋ฐ์ ์ํ ๊ด๋ฆฌ ์ ๋ต ์๋ฆฝ - ๋คํธ์ํฌ ์์ฒญ ์ ์ด ๋ก์ง ์ค๊ณ ์ ์ธํฐ์ ํฐ ๋ฐฉ์์์ ์ ์ธ์ ๋ฃฐ์ (Rule-set) ๋ฐฉ์์ผ๋ก์ ํจ๋ฌ๋ค์ ์ ํ ๊ฒํ - ์ธ๋ถ ์คํฌ๋ฆฝํธ ์์กด์ฑ์ ์ ๊ฑฐํ๊ณ ๋ชจ๋ ๋น์ฆ๋์ค ๋ก์ง์ ๋ฒ๋ค๋งํ๋ ์ ์ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ