Local Storage์ Session Storage
๐ฐ ์น ์คํ ๋ฆฌ์ง ๊ฐ์ฒด(web storage object)์ธ localStorage์ sessionStorage๋ ๋ธ๋ผ์ฐ์ ๋ด์ ํค-๊ฐ ์์ ์ ์ฅ
- ํ์ด์ง๋ฅผ ์๋ก ๊ณ ์นจํ๊ณ (sessionStorage์ ๊ฒฝ์ฐ) ์ฌ์ง์ด ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ค์ ์คํํด๋(localStorage์ ๊ฒฝ์ฐ) ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง์ง ์๊ณ ๋จ์ ์์
์ฟ ํค ๋์ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ด์ ?
- ์ฟ ํค์ ๋ค๋ฅด๊ฒ ์น ์คํ ๋ฆฌ์ง ๊ฐ์ฒด๋ ๋คํธ์ํฌ ์์ฒญ ์ ์๋ฒ๋ก ์ ์ก๋์ง ์์
- ์ฟ ํค๋ณด๋ค ๋ ๋ง์ ์๋ฃ ๋ณด๊ด ๊ฐ๋ฅ
- ๋๋ถ๋ถ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ต์ 2MB ํน์ ๊ทธ ์ด์์ ์น ์คํ ๋ฆฌ์ง ๊ฐ์ฒด๋ฅผ ์ ์ฅํ ์ ์์
- ๊ฐ๋ฐ์๋ ๋ธ๋ผ์ฐ์ ๋ด ์น ์คํ ๋ฆฌ์ง ๊ตฌ์ฑ ๋ฐฉ์์ ์ค์
- ์ฟ ํค์ ๋ ๋ค๋ฅธ ์ ์ ์๋ฒ๊ฐ HTTP ํค๋๋ฅผ ํตํด ์คํ ๋ฆฌ์ง ๊ฐ์ฒด๋ฅผ ์กฐ์ํ ์ ์์
- ์น ์คํ ๋ฆฌ์ง ๊ฐ์ฒด ์กฐ์์ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ด์์ ์ํ
- ์น ์คํ ๋ฆฌ์ง ๊ฐ์ฒด๋ ๋๋ฉ์ธ·ํ๋กํ ์ฝ·ํฌํธ๋ก ์ ์๋๋ ์ค๋ฆฌ์ง(origin)์ ๋ฌถ์ฌ์์
- ํ๋กํ ์ฝ๊ณผ ์๋ธ ๋๋ฉ์ธ์ด ๋ค๋ฅด๋ฉด ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์์
๋ ์คํ ๋ฆฌ์ง ๊ฐ์ฒด๊ฐ ์ ๊ณตํ๋ ๋ฉ์๋์ ํ๋กํผํฐ
- setItem(key, value) – ํค-๊ฐ ์์ ๋ณด๊ด
- getItem(key) – ํค์ ํด๋นํ๋ ๊ฐ์ ๋ฐ์์ด
- removeItem(key) – ํค์ ํด๋น ๊ฐ์ ์ญ์
- clear() – ๋ชจ๋ ๊ฒ์ ์ญ์
- key(index) – ์ธ๋ฑ์ค(index)์ ํด๋นํ๋ ํค๋ฅผ ๋ฐ์์ด
- length – ์ ์ฅ๋ ํญ๋ชฉ์ ๊ฐ์๋ฅผ ์ป์
Local Storage
- ์ค๋ฆฌ์ง์ด ๊ฐ์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ ๋ชจ๋ ํญ๊ณผ ์ฐฝ์์ ๊ณต์
- ๋ธ๋ผ์ฐ์ ๋ OS๊ฐ ์ฌ์์ํ๋๋ผ๋ ๋ฐ์ดํฐ๊ฐ ํ๊ธฐ๋์ง ์์
localStorage.setItem('test', 1);
alert( localStorage.getItem('test') ); // 1
- ์ค๋ฆฌ์ง(domain/port/protocol)๋ง ๊ฐ๋ค๋ฉด url ๊ฒฝ๋ก๋ ๋ฌ๋ผ๋ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์์
- localStorage๋ ๋์ผํ ์ค๋ฆฌ์ง์ ๊ฐ์ง ๋ชจ๋ ์ฐฝ์์ ๊ณต์ ๋๊ธฐ ๋๋ฌธ
- ํ ์ฐฝ์ ๋ฐ์ดํฐ๋ฅผ ์ค์ ํ๋ฉด ๋ค๋ฅธ ์ฐฝ์์ ๋ณ๋ ์ฌํญ์ ๋ณผ ์ ์์
์ผ๋ฐ ๊ฐ์ฒด์ฒ๋ผ ์ฌ์ฉ
- localStorage์ ํค๋ฅผ ์ป๊ฑฐ๋ ์ค์ ํ ๋, ์๋์ฒ๋ผ ์ผ๋ฐ ๊ฐ์ฒด์ ์ ์ฌํ ๋ฐฉ๋ฒ์ ์ฌ์ฉ
// ํค ์ค์ ํ๊ธฐ
localStorage.test = 2;
// ํค ์ป๊ธฐ
alert( localStorage.test ); // 2
// ํค ์ญ์ ํ๊ธฐ
delete localStorage.test;
- ํ์ ํธํ์ฑ ๋๋ฌธ์ ์์ง ์ด๋ฐ ๋ฐฉ๋ฒ์ด ์ง์๋๊ธฐ๋ ํ์ง๋ง, ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ์ถ์ฒํ์ง ์์
- ์ฌ์ฉ์๋ length๋ toString, localStorage์ ๋ด์ฅ ๋ฉ์๋๋ฅผ ํค๋ก ์ค์ ํ ์ ์์
- let key = 'length'; localStorage[key] = 5; // TypeError: Cannot assign to read only property 'length'...
- ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ฉด storage ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋๋ฐ, ์ด ์ด๋ฒคํธ๋ localStorage๋ฅผ ๊ฐ์ฒด์ฒ๋ผ ์ ๊ทผํ ๋ ์ผ์ด๋์ง ์์
ํค ์ํํ๊ธฐ
- ์คํ ๋ฆฌ์ง ๊ฐ์ฒด๋ iterable ๊ฐ์ฒด๊ฐ ์๋
- ๋์ ๋ฐฐ์ด์ฒ๋ผ ๋ค๋ฃจ๋ฉด ์ ์ฒด ํค-๊ฐ์ ์ป์ ์ ์์
๋ฌธ์์ด๋ง ์ฌ์ฉ
- localStorage์ ํค์ ๊ฐ์ ๋ฐ๋์ ๋ฌธ์์ด
- ์ซ์๋ ๊ฐ์ฒด ๋ฑ ๋ค๋ฅธ ์๋ฃํ์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๋ฌธ์์ด๋ก ์๋ ๋ณํ
- JSON์ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด๋ฅผ ์ธ ์ ์๊ธดํจ
- ๋๋ฒ๊น ๋ฑ์ ๋ชฉ์ ์ผ๋ก ์คํ ๋ฆฌ์ง ๊ฐ์ฒด ์ ์ฒด๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ๋ ๊ฒ๋ ๊ฐ๋ฅ
Session Storage
sessionStorage ๊ฐ์ฒด๋ localStorage์ ๋นํด ์์ฃผ ์ฌ์ฉ๋์ง ์์
์ ๊ณตํ๋ ํ๋กํผํฐ์ ๋ฉ์๋๋ ๊ฐ์ง๋ง, ํจ์ฌ ์ ํ์ ์ด๊ธฐ ๋๋ฌธ
- sessionStorage๋ ํ์ฌ ๋ ์๋ ํญ ๋ด์์๋ง ์ ์ง
- ๊ฐ์ ํ์ด์ง๋ผ๋ ๋ค๋ฅธ ํญ์ ์์ผ๋ฉด ๋ค๋ฅธ ๊ณณ์ ์ ์ฅ๋๊ธฐ ๋๋ฌธ
- ๊ทธ๋ฐ๋ฐ ํ๋์ ํญ์ ์ฌ๋ฌ ๊ฐ์ iframe์ด ์๋ ๊ฒฝ์ฐ์ ๋์ผํ ์ค๋ฆฌ์ง์์ ์๋ค๊ณ ์ทจ๊ธ๋๊ธฐ ๋๋ฌธ์ sessionStorage๊ฐ ๊ณต์
- ํ์ด์ง๋ฅผ ์๋ก ๊ณ ์นจํ ๋ sessionStorage์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ์ฌ๋ผ์ง์ง ์์
- ํ์ง๋ง ํญ์ ๋ซ๊ณ ์๋ก ์ด ๋๋ ์ฌ๋ผ์ง
Storage Event
- setItem, removeItem, clear๋ฅผ ํธ์ถํ ๋ ๋ฐ์
- ์ฐ์ฐ(key/oldValue/newValue)๊ณผ ๊ด๋ จ๋ ๋ฐ์ดํฐ ์ ์ฒด์ ๋ฌธ์ url, ์คํ ๋ฆฌ์ง ๊ฐ์ฒด storageArea ๋ฅผ ๊ฐ์ง๊ณ ์์
- ์ด๋ฒคํธ๊ฐ ์์ฑ๋ ๊ณณ์ ์ ์ธํ๊ณ ์คํ ๋ฆฌ์ง์ ์ ๊ทผํ๋ ๋ชจ๋ window ๊ฐ์ฒด์์ ์ผ์ด๋จ
- (sessionStorage๋ ํญ ๋ด์์, localStorage์์๋ ์ ์ญ์์).
Reference
'Language > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ํ์ ์ฐฝ ๊ตฌํ - window.open (0) | 2024.05.20 |
---|---|
[JavaScript] javascript ์์๋ ๊ฒ (0) | 2023.01.31 |
[JavaScript] async / await 2 (0) | 2023.01.26 |
[JavaScript] async / await 1 (1) | 2023.01.25 |
[JavaScript] Event-onChange (0) | 2023.01.22 |
๋๊ธ