ย
(1)
๋ง์ฝ ํ๋ฃจ ์ฃผ๊ธฐ๋ก ์
๋ฐ์ดํธ๋๋ ๋ด์ค ํค๋๋ผ์ธ ๋ฐ์ดํฐ๋ฅผ ๋ ๋๋งํ๊ธฐ ์ํด
์๋ฒ์์ ์ด๋ฅผ Fetching ํด์ผ ํ๋ค๋ฉด... ์ด๋ค ๋ฐฉ๋ฒ์ ์ด์ฉํ๋ ๊ฒ์ด ์ข์๊น?
ย
- ์ด์ฐจํผ ํค๋๋ผ์ธ ๊ฑฐ ๋ฐ์ดํฐ ์ผ๋ง ํฌ์ง ์์ํ ๋ ๋ฐฉ๋ฌธ ์๋ง๋ค Fetch ํ์ผ
- Service worker๋ฅผ ์ด์ฉํด fetch ํํนํ ๋ค, Cache storage๋ก ์บ์ฑ? (๋งํฌ)
- stale-while-revalidate Cache-Control extension?
ย
๊ฐ์ธ์ ์ผ๋ก๋ ์ธ ๋ฒ์งธ ๋ฐฉ๋ฒ์ด ๊ฐ์ฅ ์ ์ ํ๋ค ํ๋จํ๋ค
ย
ย
(2)
๋จผ์ ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ๊ฒฝ์ฐ, ๋ค์์ ํ์ ์ด ์๋ค
ย
- ํค๋๋ผ์ธ ๋ฐ์ดํฐ๊ฐ ํญ์ ์์์ผ ํ๋ค๋ ๊ฐ์ ์ด ํ์
- ์์ ์ ์ด๊ณ ๋น ๋ฅธ ๋คํธ์ํฌ๊ฐ ํญ์ ๊ตฌ์ฑ๋์ด ์์ด์ผ ํจ
ย
๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ๊ฒฝ์ฐ, ๋ค์์ ๋ถํธํจ์ด ์๋ค.
ย
- ๊ตณ์ด Service worker๋ฅผ ๊ตฌ์ฑํด์ค์ผ ํจ
- Cachingํ ๋ฐ์ดํฐ๋ฅผ Specificํ๊ฒ ์ง์ ํด์ค์ผ๋ง ํจ
ย
ย
(3)
stale-while-revalidate๋ RFC 5861์ ์ ์๋
Cache-Control
Extension์ธ๋ฐ๊ทธ๋ฅ ๋ค์๊ณผ ๊ฐ์ด
Cache-Control
ํค๋๋ฅผ ์ง์ ํด์ฃผ๋ฉด ๋ธ๋ผ์ฐ์ ์์ ์์์ ์บ์๋ฅผ ๊ด๋ฆฌํด์ค๋คย
Cache-Control: max-age=1, stale-while-revalidate=59
ย
- Respond data๋ 1s ๊น์ง Fresh โ ์บ์๋ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉ
- 1s ~ 60s ๋ฒ์์์๋ Cache๋ ๋ฐ์ดํฐ๋ฅผ ์ผ๋จ ์ ๊ณตํ ํ, ๋ธ๋ผ์ฐ์ ์์ Fetching์ ํตํด Stale ์ฌ๋ถ ์ฒดํฌ โ Staleํ๋ค๋ฉด? Update & Caching
- 60s ์ดํ๋ถํฐ๋ ๋ฌด์กฐ๊ฑด Fetchingํด ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ด โ ์ดํ Caching
ย
์ด๋ฐ ๋ฐฉ์์ผ๋ก ์บ์๋ฅผ ๊ด๋ฆฌํด์ฃผ๊ธฐ์, ์ข ๋ ๋์ UX๋ฅผ ๊ตฌ์ฑํ ์ ์๊ฒ ๋ค
ย
ย
(4)
ํ๋ ๋ ์์๋ฅผ ๋ค์ด๋ณด์๋ฉด...
ย
Cache-Control: max-age=600, stale-while-revalidate=60
ย
- Respond data๋ 600s ๊น์ง Fresh โ ์บ์๋ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉ
- 600s ~ 660s ๋ฒ์์์๋ Cache data ์ ๊ณต ํ Stale ์ฌ๋ถ ์ฒดํฌ โ Staleํ๋ค๋ฉด? Fetching & Updating & Caching
- 660s ์ดํ๋ถํฐ๋ ๋ฌด์กฐ๊ฑด Fetching ๋ฐ Caching
ย
ย
(5)
์ด๋ ๊ฒ
stale-while-revalidate
extension์ ์ด์ฉํ๋ฉด ๊ฐ๋จํ ๋ฐ์ดํฐ๋ฅผ ์บ์ฑํ ์ ์๊ฒ ๋๊ธฐ์์ ์ฌ์ฉํด๋ณด๋๋ก ํ์
ย
๋ฌผ๋ก ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ๋ ํธํ๋ค๋ฉด ๊ทธ๊ฑฐ ์ฐ๊ณ ... ์ด์ฐจํผ ๋๊ตฌ๋๊น
ย
ย
(6)
- ์ค์ ๋์ํ๋ ์์: https://glitch.com/edit/#!/s-w-r-demo
ย