ํ์ฌ ํ๋ก์ ํธ์ ์ ํฉํ ๊ฐ๋จํ ์ด๋ฏธ์ง ์บ์๋ฅผ ๊ตฌํํ์ฌ ์ฌ์ฉํ์์ต๋๋ค.
- ๊ธฐ๋ณธ์ ์์๋ก ์์ ํ ์ด๋ฏธ์ง ์บ์์ ๊ฒฝ์ฐ, ๋คํธ์ํฌ ์์ฒญํ ๋์คํฌ์ ์ ์ฅ์ด ๋๋ ๊ตฌ์กฐ๋ก ์ ์ํ์์ต๋๋ค.
- ์ด๋ฏธ์ง์ ๊ฒฝ์ฐ ์๋์ ์ผ๋ก ์ฉ๋์ด ํฌ๊ธฐ ๋๋ฌธ์, ์ด ์ด๋ฏธ์ง ์์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค์ ์ฌ์ฉํ๋ ๊ฒ ์์ฒด๊ฐ ๋ญ๋น๋ผ ์๊ฐํ์์ต๋๋ค.
- ํ์ง๋ง ์ง์ ํ ์๋ฏธ์ ์บ์๋ฅผ ์กฐ๊ธ์ด๋ผ๋ ๊ตฌํํ๋ ค๋ฉด ๋ฉ๋ชจ๋ฆฌ ์บ์ ๊ธฐ๋ฅ ์์ฒด๋ ์ฌ์ฉํด์ผ ํ๋ค๋ ์๊ฐ์ ์ด๋ฏธ์ง ์บ์๋ฅผ ์์ ํ๊ธฐ๋ก ๋ง์ ๋จน์์ต๋๋ค.
- ์ด๋ฏธ์ง ์บ์๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์๋ ์ฌ์ค ๋ง์ ๋ถ๋ถ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ์บ์์ ์ ์ ๋ ํ๋จ ๋ฐฉ๋ฒ์ ๋ฐ๋ฅธ ์ ์ฑ ๋ค์ด ๊ทธ ์๊ฐ ๋ ์ ์์ต๋๋ค.
- ํ์ง๋ง ์ ํฌ๋ ๋น์ฅ ์ ํฌ์ ํ๋ก์ ํธ์์ ์ฌ์ฉํ ๋ก์ง์ด ๋ฌด์์ธ๊ฐ์ ๋ณด๋ค ์ง์คํ์์ต๋๋ค.
- ์ฌ์ฉ์๊ฐ ์ ๋ก๋ํ ์ด๋ฏธ์ง๊ฐ ๋ณ๊ฒฝ๋์ง ์๋ ๊ธฐํ ํน์ฑ์, ์บ์์ ์ ์ ๋๋ฅผ ์ํ ๋ก์ง ์์ฒด๋ฅผ ๊ตฌํํ๋ ๊ฒ์ ์ค๋ฒ์์ง๋์ด๋ง์ด๋ผ ํ๋จํ์์ต๋๋ค. ๊ทธ๋์ ์ถํ ํ์ฅํ๋๋ผ๋ ์ฝ๊ฒ ๊ฐ๋ฅํ๋ฉด์ ํ์ฌ์ ๋ชฉ์ ์ ๋ฌ์ฑํ ์ ์๋ apple ํ๋ ์ ์ํฌ๋ฅผ ์ฌ์ฉํ์์ต๋๋ค.
- ์ด ๋, ์ ํ์์ ์ ๊ณตํ๋ URLCache๋ฅผ ์ฌ์ฉํ์์ต๋๋ค. ํด๋น ๋ฌธ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฌ ๊ฒฐ์ ํธ๋ฆฌ์ ๋ํด ์ดํดํ ์ ์ฉํ์์ต๋๋ค.
- ์บ์ ์ ์ฑ ์ ๊ฒฝ์ฐ returnCacheDataElseLoad, ์ฆ ์บ์๊ฐ ์์ผ๋ฉด ๋ฐํํ๊ณ , ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ ์ฑํํ์์ต๋๋ค.
- URLCache๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์์ฒญ์ ๋ํ ์ ์, ๊ทธ๋ฆฌ๊ณ ๊ทธ ์๋ต์ ๋ํด ์บ์์ ์ ์ฅํด์ผ ํ์ต๋๋ค.
- data Task์ ๊ฒฝ์ฐ, ์๋ต์ ๋ํด ์๋์ผ๋ก ์ ์ฅํด์ฃผ์ง๋ง, download task์ ๊ฒฝ์ฐ ๋ณดํต ํฐ ์ฉ๋์ ๋ฆฌ์์ค๋ค์ ๋ฐ๊ธฐ ๋๋ฌธ์, ์บ์์ ๋ฑ๋กํ๋ ๋ถ๋ถ์ ์๋์ผ๋ก ์ฒ๋ฆฌํด ์ฃผ์ด์ผ ํ์ต๋๋ค.
- ๋ฐ๋ผ์ ์ด๋ฏธ์ง ์๋ต์ ๋ํด ์์ฒญ์ ํค๋ก, ์๋ต์ ๊ฐ์ผ๋ก ์ค์ ํ์ฌ ์บ์์ ์ ์ฅํ์์ต๋๋ค.
Race Condition ๋ฌธ์
- ๋ฆฌ๋๋ณด๋ ํ๋ฉด์์๋ 1, 2, 3์๋ฅผ ๊ฐ์ฅ ์์, ๊ทธ๋ฆฌ๊ณ ํ์์๋ 1์๋ถํฐ 10์๊น์ง ํํ์ ํ ์ ์๊ฒ ๋ฉ๋๋ค.
- ๋ง์ฝ ์ด๊ธฐ์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค์ง ๋ชปํ ๊ฒฝ์ฐ์ ์ด๋ฏธ์ง ์บ์๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, ์ค๋ณตํด์ 1, 2, 3๋ฑ์ ์ฌ์ง์ ์์ฒญํด์ผ ํฉ๋๋ค.
- ํ์ง๋ง ์ด ๊ฒฝ์ฐ, race Condition ๋ฌธ์ ๊ฐ ๋ฐ์ํ์๊ณ , ํด๋น ์์ฒญ์ ๊ฐ์ ธ์ค๋ ค๋ ๋๊ฐ์ ์์ ๋จ์์์ ํ์ชฝ์ ๋ฐ์ดํฐ๋ฅผ write ํ๊ณ ์๊ณ , ํ์ชฝ์ ๋ฐ์ดํฐ๋ฅผ read ํ๋ ค๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ์ ๋๋ก๋ ๋์์ ์ํํ์ง ๋ชปํ์ต๋๋ค.
- ๊ฒฐ๊ตญ ํด๋น ๋ฌธ์ ๋ ์๋ก๋ค๋ฅธ ๋๊ฐ์ ์์ ๋จ์๊ฐ ์์ฒญํ๋ ์์ ์ ๋ฐ๋ผ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ, ์๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํฉ๋๋ค.
- ์ด๋ฐ ๋ถ๋ถ์ ๋ํด ๋๊ฐ์ง ์๊ฐ์ ํ์์ต๋๋ค.
- ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ์์ฒญํ๊ณ , ํด๋น ๋ฐ์ดํฐ๊ฐ ๋์ฐฉํ ์์ ์ ๋ค์ ์์
์ด ๋คํธ์ํฌ ์์ฒญ์ ํ ์ ์๊ฒ ํ์.
- ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ๊ฒฝ์ฐ, ์ด๋ฏธ์ง ํต์ ์์ฒด๋ฅผ ๋๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํ์๋ ์๊ฒฌ๊ณผ ๊ฐ์๊ณ , ์ด๋ด ๊ฒฝ์ฐ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด๋ค ์น๋ช ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ฌ ๊ฒ์ด๋ผ ์๊ฐํ์ต๋๋ค.
- ์บ์์ ๋ฐ์ดํฐ๊ฐ ์๋์ง ํ์ธํ๋ ์์ ์, ์์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์์ฒญ์ ํ๋ฒ ๋ํ๊ณ , ์๋ต์ด ์จ ๊ฒฝ์ฐ์ ์บ์์ ๋ฐ์ดํฐ๊ฐ ๋์ฐฉํด์๋์ง ๋ค์ํ๋ฒ ํ์ธํ๋ ๋ก์ง์ ๋ฃ์ด์ ํด๊ฒฐํ์.
- ์ค๋ณต๋๋ ๋ฐ์ดํฐ ์์ฒญ์์ฒด๋ฅผ ๋๋ฒํ๋ค๋ ์ ์ด ๋ง์์ ๊ฑธ๋ ธ์ต๋๋ค.
- ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ์์ฒญํ๊ณ , ํด๋น ๋ฐ์ดํฐ๊ฐ ๋์ฐฉํ ์์ ์ ๋ค์ ์์
์ด ๋คํธ์ํฌ ์์ฒญ์ ํ ์ ์๊ฒ ํ์.
- ์ด๋ฐ ๋ถ๋ถ์ ๋ํด ๋ ๋์ ์๊ฐ์ด ๋์ง์์ ๋๋ฒ์งธ ๋ฐฉ๋ฒ์ ๋์ ํ์ฌ, ํด๊ฒฐํ์ต๋๋ค.
- ํ์ง๋ง, ์ค๋ณต๋๋ ์์ฒญ์ด ๋ง์ ๊ฒฝ์ฐ, ์์ ์ ๋ฌธ์ ๋ก ํ์ํ์ง ์์ ์์ฒญ์ ๊ณ์ํ ์ ์๋ค๋ ์ ์ด ๋ง์์ ๊ฑธ๋ฆฝ๋๋ค.