Workbox - team-yaza/mozi-client GitHub Wiki
๊ฐ์
Next PWA๋ Workbox๋ฅผ ์ฌ์ฉํ๋ค. ์ด Workbox์ ๋ํด์ ์์๋ณด์.
serviceWorker๋ฅผ ๋ค๋ฃจ๋ฉด์ ๋๋ ๊ฒ์ '์ ๋ง ๋ค๋ฃจ๊ธฐ ์กฐ์กํ๋ค'๋ผ๋ ๋๋์ด์๋ค. API๋ ๋ค๋ฃจ๊ธฐ ์กฐ์กํ ๊ฒ๋ค์ ํธํ๊ฒ ๋ค๋ฃจ๊ฒ ํด์ค๋ค. Workbox๊ฐ ๊ทธ๋ ๋ค.
Workbox is a set of modules that simplify common service worker routing and caching.
Workbox์ ๋ชฉํ๋ ์๋น์ค์์ปค ์ฌ์ฉ์ ์ฝ๊ฒ ์ฌ์ฉํจ์ ์๊ณ ๋์์ ํ์ํ ๊ฒฝ์ฐ ๋ณต์กํ ์์ฉ ํ๋ก๊ทธ๋จ ์๊ตฌ ์ฌํญ์ ์์ฉํ ์ ์๋ ์ ์ฐ์ฑ์ ์ ๊ณตํ๋ ๊ฒ์ ๋ชฉํ๋กํ๋ค.
๊ฐ์ฅ ๊ฐ๋จํ ์์๋ก workbox-build
๋ ์ง์ ๋ asset์ ๋ฏธ๋ฆฌ ์บ์ํ๋ ์๋น์ค ์์
์๋ฅผ ์์ฑํ ์ ์๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
๋ชจ๋๋ค์ ๋ช๊ฐ ๋ณด์.
workbox-routing
: for request matchingworkbox-strategies
: for caching strategiesworkbox-precaching
: for precachingworkbox-expiration
: for managing cachesworkbox-window
: registering a service worker and handling updates in the window context
์ด๋ฌํ ๋ชจ๋๋ค์ ์๋น์ค ์์ปค API๋ฅผ ์ง์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ์ฝ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ์ ์ธ์ ๋ฐฉ์์ผ๋ก ์๋น์ค ์์ปค ์ฝ๋๋ฅผ ์์ฑํ๋๋ฐ ๋์์ด ๋๋ค.
์๋๋ ์ ์ธ์ ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ ๊ฐ๋จํ ์์ ์ด๋ค.
import { skipWaiting, clientsClaim } from 'worbox-core';
skipWaiting()
clientsClaim()
skipWaiting
๊ณผ clientsClaim
์ด๋ผ๋ ํจ์๊ฐ ๋ณด์ธ๋ค. ์๋น์ค ์์ปค๋ ์ต์ด ๋ฑ๋ก๋ ํ ๋ค์ ๋ก๋์๊น์ง ์ด๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค. ํ์ง๋ง skipWaiting
๊ณผ clientsClaim
์ ์ ์ฉํ๋ค๋ฉด, ํด๋น ํ์ด์ง๋ฅผ ์ฆ์ ์ ์ดํ๋ค.
skipWaiting
์ workbox์์ ์ฌ๋ผ์ง ๊ฒ์ด๋ผ๊ณ ํ๋ค. ๋์ ์๋น์ค์์ปค์์self.skipWaiting()
์ ์ฌ์ฉํ๋ค.
Precaching with Workbox
Precaching์ ์๋น์ค ์์ปค์์ ์ํํ๋ ์ผ๋ฐ์ ์ธ ์์ ์ค ํ๋์ด๋ฉฐ Workbox๋ ์ด์ ๋ํ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
์ฐ์ ๋๊ฐ์ง๊ฐ ์๋ค.
generateSW
injectManifest
generateSW
Precaching with generateSW
๋ Workbox์ ์บ์ฑํ๊ธฐ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ด๋ค.
generateSW
์ ๋ํด ๊ธฐ์ตํด์ผ ํ ๊ฐ์ฅ ์ค์ํ ์ ์ ์๋น์ค์์ปค๋ฅผ ์ง์ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ Workbox์ ์๋น์ค ์์ปค๋ฅผ ์์ฑํ๋๋ก ์์ฒญํ๋ค๋ ๊ฒ์ด๋ค. ๋ํ, ๋ค์ํ ์ต์
์ ํตํด ๋์์ ์ํฅ์ ์ค ์ ์๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก workbox-webpack-plugin
์ ์นํฉ์ด ์ข
์์ฑ ๊ทธ๋ํ์ ํฌํจํ๋ ๋ชจ๋ ๊ฒ์ ๋ฏธ๋ฆฌ ์บ์ฑํ๊ณ service-worker.js
๋ผ๋ ์๋น์ค ์์ปค๋ฅผ output.path
์ ์ ์ฅ๋ ๋๋ ํ ๋ฆฌ์ ์ด๋ค.
์์ ๊ฐ์ด ์ด๋ฏธ workbox
๊ด๋ จ๋ ํ๋ฌ๊ทธ์ธ์ด next-pwa๋ฅผ ์ค์นํ๋ฉด์ ๊น๋ฆฐ ๊ฒ์ ๋ณผ ์ ์๋ค.
Warning: If too many assets in your project are precached with the default settings, use one of the glob options to exclude resources in the generateSW configuration. When using workbox-webpack-plugin, consult the plugin's GenerateSW documentation to find out how to prevent unwanted assets from being precached, as its configuration differs from generateSW.
์๋์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- Precaching: ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ํ๊ธฐ ์ ์ ๋ฏธ๋ฆฌ ์บ์ฑํด๋๋ ์บ์ฑ ๋ฐฉ๋ฒ.
- Runtime Caching: ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์ ์ํฌ ๋ ๋ฐ์ํ๋ ์์ฒญ์ ๋ํด ์๋ฒ ์๋ต์ ์บ์ ์คํ ๋ฆฌ์ง์ ์ ์ฅํ๋ ์บ์ฑ ๋ฐฉ๋ฒ. ๋ณดํต ์ด๋ฏธ์ง์ ๊ฐ์ ๋ฆฌ์์ค๋ ํ์ผ ์ฉ๋์ด ์ปค์ ์ฒ์ ํ์ด์ง ์ ์ํ ๋ ์๋น์ค ์์ปค ์ค์น ์๊ฐ์ด ๊ธธ์ด์ง๋ฏ๋ก ๋ฐํ์ ์บ์ฑ์ผ๋ก ํ๋๊ฒ ์ข๋ค.
- Strategies
- Request Routing
- Background Sync
- Helpful debugging