์น ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ํด๋ผ์ด์ธํธ ์ธก์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ผ ํ๋ ์๊ฐ์ด ์๋ค.
๋ก๊ทธ์ธ ์ํ ์ ์ง, ์ฌ์ฉ์ ์ค์ ์ ์ฅ, ์ฅ๋ฐ๊ตฌ๋ ๋ฐ์ดํฐ ๋ฑ ๋ค์ํ ์ํฉ์์ ๋ธ๋ผ์ฐ์ ์ ์ฅ์๋ฅผ ํ์ฉํ๊ฒ ๋๋ค.
๊ทธ ์ค์์๋ ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๋ ๋ ๊ฐ์ง๊ฐ ๋ฐ๋ก LocalStorage์ SessionStorage๋ค.
๋ ๋ค Web Storage API์ ์ผ๋ถ๋ก ํฌํค๋ณด๋ค ํจ์ฌ ํฐ ์ฉ๋์ ์ ๊ณตํ๊ณ ์๋ฒ๋ก ์๋ ์ ์ก๋์ง ์๋๋ค๋ ๊ณตํต์ ์ด ์๋ค.
LocalStorage - ํญ์ ๋ซ์๋ ์ด์์์
- LocalStorage์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ์์ ํ ์ข
๋ฃํ๊ณ ๋ค์ ์ด์ด๋ ์ ์ง๋จ
- ์ฌ์ฉ์๊ฐ ์ง์ ์ญ์ ํ๊ฑฐ๋ ์ฝ๋๋ก clear() / removeItem()์ ํธ์ถํ์ง ์๋ ํ ์์ํ ๋จ์
- ๊ฐ์ ์ถ์ฒ (origin : ํ๋กํ ์ฝ + ๋๋ฉ์ธ + ํฌํธ) ๋ผ๋ฉด ์ฌ๋ฌํญ์์ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ ์งํจ
// ์ ์ฅ
localStorage.setItem('theme', 'dark');
// ์ฝ๊ธฐ
const theme = localStorage.getItem('theme'); // 'dark'
// ์ญ์
localStorage.removeItem('theme');
// ์ ์ฒด ์ญ์
localStorage.clear();
- ์ ํฉํ ์ฌ์ฉ ์ฌ๋ก
- ๋คํฌ ๋ชจ๋ / ์ธ์ด ์ค์ ๋ฑ ์ฌ์ฉ์ ํ๊ฒฝ ์ค์
- ์๋ ๋ก๊ทธ์ธ์ ์ํ ํ ํฐ ์ ์ฅ (๋ณด์ ์ฃผ์)
- ์ฑ์ ์ํ ์บ์ฑ (API ์๋ต ์บ์ ๋ฑ)
SessionStorage - ํญ์ ๋ซ์ผ๋ฉด ์ฌ๋ผ์ง
- ๋ธ๋ผ์ฐ์ ํญ(์ธ์
) ๋จ์๋ก ๊ฒฉ๋ฆฌ๋จ
- ๊ฐ์ ์ฌ์ดํธ๋ผ๋ ํญ์ด ๋ค๋ฅด๋ฉด ์๋ก ๋ค๋ฅธ ์ ์ฅ ๊ณต๊ฐ์ ์ฌ์ฉ
- ํญ์ ๋ซ๋ ์๊ฐ ๋ฐ์ดํฐ ์ญ์ ๋จ
- ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ๋ ๊ฒฝ์ฐ์๋ ๋ฐ์ดํฐ๊ฐ ์ ์ง
// ์ ์ฅ
sessionStorage.setItem('step', '2');
// ์ฝ๊ธฐ
const step = sessionStorage.getItem('step'); // '2'
// ์ญ์
sessionStorage.removeItem('step');
- ์ ํฉํ ์ฌ์ฉ ์ฌ๋ก
- ๋ฉํฐ ์คํ
ํ์๊ฐ์
/ ๊ฒฐ์ ํผ์ ์ค๊ฐ ๋ฐ์ดํฐ
- ํญ ๋ณ๋ก ๋
๋ฆฝ์ ์ธ ๊ฒ์ ํํฐ ์ํ
- ๋ก๊ทธ์ธ์์ด ์ ์งํ ์์ ์ฅ๋ฐ๊ตฌ๋
๊ณตํต ์ฃผ์์ฌํญ
- ๋ณด์์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ ์ ์ฅํ์ง ๋ง ๊ฒ
- ๋ ๋ค XSS ๊ณต๊ฒฉ์ ๋
ธ์ถ๋ ์ ์์, ๋น๋ฐ๋ฒํธ๋ ๊ฒฐ์ ์ ๋ณด ๊ฐ์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ ์ ๋ ์ ์ฅ X
- ์ ์ฅ ๊ฐ๋ฅํ ํ์
์ ๋ฌธ์์ด๋ฟ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ ค๋ฉด ๋ฐ๋์ ์ง๋ ฌํ
// ๊ฐ์ฒด ์ ์ฅ ์ JSON ์ง๋ ฌํ ํ์
localStorage.setItem('user', JSON.stringify({ name: 'Kim', age: 30 }));
const user = JSON.parse(localStorage.getItem('user'));
๊ฒฐ๋ก
- ์ ์ง๋ผ์ผ ํ๋ค -> LocalStorage
- ํญ ์์์๋ง ์ ๊น ํ์ -> SessionStorage
| ๊ตฌ๋ถ |
LocalStorage |
SessionStorage |
| ๋ฐ์ดํฐ ์ ์ง ๊ธฐ๊ฐ |
๋ช
์์ ์ผ๋ก ์ญ์ ํ๊ธฐ ์ ๊น์ง ์๊ตฌ ์ ์ง |
๋ธ๋ผ์ฐ์ ํญ(์ธ์
)์ ๋ซ์ผ๋ฉด ์ญ์ |
| ๊ณต์ ๋ฒ์ |
๋์ผ ์ถ์ฒ(origin)์ ๋ชจ๋ ํญ·์ฐฝ ๊ณต์ |
ํญ(์ฐฝ)๋ง๋ค ๋
๋ฆฝ์ , ๊ณต์ ์ ๋จ |
| ์ฉ๋ |
์ฝ 5~10MB (๋ธ๋ผ์ฐ์ ๋ง๋ค ์์ด) |
์ฝ 5MB |
| ์๋ฒ ์ ์ก |
์๋ ์ ์ก ์ ๋จ |
์๋ ์ ์ก ์ ๋จ |
| ์ ๊ทผ ๊ฐ๋ฅ ๋ฒ์ |
๊ฐ์ origin์ด๋ฉด ์ด๋์๋ ์ ๊ทผ ๊ฐ๋ฅ |
ํด๋น ํญ ๋ด์์๋ง ์ ๊ทผ ๊ฐ๋ฅ |