์ง๋ฌธ๊ฒ์ํ ๊ธฐ๋ฅ ๊ตฌํํ๋ฉด์ ๊ณต๋ถํ๊ฒ ๋ ๋ถ๋ถ์ธ ์น ์คํ ๋ฆฌ์ง, ๋ก์ปฌ๊ณผ ์ธ์ ์ ๋ํ ๋ด์ฉ์ ๋ค๋ค๋ณด์!
๐ก ์ฑ๊ณต์ ๋น์ ์ด ํ๊ธธ ์ํ๋ ๊ฒ์ ํ ๋ ๋ฐ๋ผ์จ๋ค. ์ด๊ฒ์ด ์ ์ผํ ์ฑ๊ณต์ ๋น๊ฒฐ์ด๋ค.
"Success follows doing what you want to do. There is no other way to be successful." -๋ง์ฝค ํฌ๋ธ์ค
HTML5 ์ด์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์๋ฒ ์์ฒญ์ ํฌํจ๋ ์ฟ ํค์ ์ ์ฅํด์ผ ํ๋ค.
HTML Web Storage?
Web Storage๋ HTML5๋ถํฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ผ๋ก, ํด๋น ๋๋ฉ์ธ๊ณผ ๊ด๋ จ๋ ํน์ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ๊ฐ ์๋๋ผ ํด๋ผ์ด์ธํธ ์น๋ธ๋ผ์ฐ์ ์ ์ ์ฅํ ์ ์๋๋ก ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ด๋ค. (์ฟ ํค(cookie)์ ๋น์ทํ ๊ธฐ๋ฅ)
Web Storage API๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฟ ํค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ์ง๊ด์ ์ธ ๋ฐฉ์์ผ๋ก ํค/๊ฐ ์์ ์ ์ฅํ ์ ์๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ๋ค. Web Storage API
์น ์คํ ๋ฆฌ์ง๋ฅผ ์ฌ์ฉํ๋ฉด ์น ์ ํ๋ฆฌ์ผ์ด์
์ด ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ๋ด์์ ๋ก์ปฌ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
ํ ์ ์๋ค.
์น ์ ์ฅ์๋ ๋ ์์ ํ๊ณ ์น ์ฌ์ดํธ ์ฑ๋ฅ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ก์ปฌ์ ์ ์ฅํ ์ ์๋ค.
Web Storage์ ๊ฐ๋ ์ ํค/๊ฐ ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ํค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ํจํด์ด๋ค.
์ฟ ํค์ ๋ฌ๋ฆฌ ์ ์ฅํ๋๋ ๋ ํฌ๊ณ (์ต์ 5MB), ์ ๋ณด๊ฐ ์๋ฒ๋ก ์ ์ก๋์ง ์๋๋ค.
์๋ฒ์ ๋ถํ์ํ ๋ฐ์ดํฐ ์ ์ฅ์ ๋ง์ ์ ์๋ค.
๋ฌธ์์ด ์ธ์๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ชจ๋ ์์ํ ๋ฐ์ดํฐ์ ๊ฐ์ฒด ์ ์ฅ ๊ฐ๋ฅํ๋ค.
๋๋ฉ์ธ ๋จ์๋ก ์ ๊ทผ์ด ์ ํ๋๋ CORS ํน์ฑ ๋๋ถ์ CSRF๋ก๋ถํฐ ์์ ํ๋ค.
โฝ window.localStorage- ๋ง๋ฃ ๋ ์ง๊ฐ ์๋ ๋ฐ์ดํฐ ์ ์ฅ
โฝ window.sessionStorage- ํ ์ธ์ ์ ๋ํ ๋ฐ์ดํฐ ์ ์ฅ(๋ธ๋ผ์ฐ์ ํญ์ ๋ซ์ผ๋ฉด ๋ฐ์ดํฐ๊ฐ ์์ค๋จ)
๋ ์คํ ๋ฆฌ์ง ๊ฐ์ฒด๋ ๋์ผํ ๋ฉ์๋์ ํ๋กํผํฐ๋ฅผ ์ ๊ณตํ๋ค.
setItem(key, value)
โ ํค-๊ฐ ์์ ๋ณด๊ด
//key๊ฐ "test"๊ณ , value๊ฐ "1"์ธ ๋ฐ์ดํฐ ์ ์ฅ
localStorage.setItem('test', 1);
sessionStorage.setItem('test', 1);
getItem(key)
โ ํค์ ํด๋นํ๋ ๊ฐ์ ๋ฐ์์ด
//key๊ฐ "test"์ธ ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
localStorage.getItem('test');
sessionStorage.getItem('test');
removeItem(key)
โ ํค์ ํด๋น ๊ฐ์ ์ญ์
//key๊ฐ "test"์ธ ๋ฐ์ดํฐ ์ญ์
localStorage.removeItem('test');
sessionStorage.removeItem('test');
clear()
โ ๋ชจ๋ ๊ฒ์ ์ญ์
//key๊ฐ "test"์ธ ๋ฐ์ดํฐ ์ญ์
localStorage.clear();
sessionStorage.clear();
key(index)
โ ์ธ๋ฑ์ค(index)์ ํด๋นํ๋ ํค๋ฅผ ๋ฐ์์ด
//index์ ํด๋นํ๋ ํค๋ฅผ ๋ฐ์์จ๋ค.
localStorage.key(index);
sessionStorage.key(index);
length
โ ์ ์ฅ๋ ํญ๋ชฉ์ ๊ฐ์๋ฅผ ์ป์
//์คํ ๋ฆฌ์ง์ ์๋ ๋ฐ์ดํฐ ํญ๋ชฉ์ ๊ฐ์๋ฅผ ์ป๋๋ค.
localStorage.length;
sessionStorage.length;
ํค ์ํ ๋ฐฉ๋ฒ!
(์คํ ๋ฆฌ์ง์ ๊ธธ์ด๋งํผ ๋ฐ๋ณทํ๋ฉด์ ํค๋ฅผ ๋ฃ์ด ์ํํ๋ค.)
for(let i=0; i<localStorage.length; i++) {
let key = localStorage.key(i);
alert(`${key}: ${localStorage.getItem(key)}`);
}
๐ฑlocalStorage & sessionStorage์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋๐ฑ
ํค์ ๊ฐ์ ๋ฐ๋์ ๋ฌธ์์ด์ด์ด์ผ ํ๋ค.
์ ํ ์ฉ๋์ 5MB ์ด์์ธ๋ฐ, ๋ธ๋ผ์ฐ์ ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์๋ค.
๋ฐ์ดํฐ๊ฐ ํ๊ธฐ๋์ง ์๋๋ค.
์ค๋ฆฌ์ง(๋๋ฉ์ธยทํฌํธยทํ๋กํ ์ฝ)์ ๋ฌถ์ฌ์๋ค.
๋ ์คํ ๋ฆฌ์ง ๊ฐ์ฒด๋ Map๊ณผ ์ ์ฌํ๋ค. setItem/getItem/removeItem์ ์ง์ํ๋ค.
ํ์ง๋ง ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํด ํค์ ์ ๊ทผํ ์ ์๋ค๋ ์ (key(index))์์ ์ฐจ์ด๊ฐ ์๋ค.
localStorage | sessionStorage |
---|---|
์ค๋ฆฌ์ง์ด ๊ฐ์ ํญ, ์ฐฝ ์ ์ฒด์์ ๊ณต์ ๋๋ค. | ์ค๋ฆฌ์ง์ด ๊ฐ์ ๋ธ๋ผ์ฐ์ ํญ, iframe์์ ๊ณต์ ๋๋ค. |
ํ์ด์ง๋ฅผ ์๋ก ๊ณ ์นจ ํด๋ ๋จ์์๋ค. ๋ธ๋ผ์ฐ์ ๋ฅผ ๊ป๋ค ์ผ๋ ๋จ์์๋ค. | ํ์ด์ง๋ฅผ ์๋ก ๊ณ ์นจ ํด๋ ๋จ์์๋ค. ํ์ง๋ง ํญ์ด๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ข ๋ฃํ๋ฉด ์ฌ๋ผ์ง๋ค. |
storage์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค๊ฐ ์กฐ๊ธ ์ ๋ฆฌํด ๋์ผ๋ฉด ์ข์ ๊ฒ ๊ฐ์์, ๋ฐ๋ก ๊ธ์ ์ฐ๊ฒ ๋์๋ค. ์๋ฒ๋ก ๋ณด๋ด์ง ์๊ณ ํด๋ผ์ด์ธํธ์ ์ ์ฅํ๋ค๋..! ใ
ใ
์ ๊ธฐํ๋น..๐
ํ์คํ ๊ธ์ ์ฐ๋ฉด์ ์ ๋ฆฌํ๋๊น ๊ฐ๋
์ดํด๋ ํ์คํ๊ฒ ๋๋ ๊ธฐ๋ถ! ๋ค์์๋ ์ฟ ํค์ ๋ํด์๋ ํ ๋ฒ ๊ณต๋ถ์ผ๊ฒ ๋ค!