웹의 데이터를 클라이언트에 저장할 수 있는 자료구조다.
HTML5에서는 웹 사이트의 데이터를 클라이언트에 저장할 수 있는 새로운 자료구조인 Web Storage 스펙이 포함되어있다.
key:value
쌍으로 데이터를 저장하고 key
를 기반으로 데이터를 조회하는 패턴이다.
내부적으로는 영구저장소(LocalStorage)와 임시저장소(SessionStorage)가 분리되어 데이터 지속성에 따라 구분할 수 있어 응용 환경에 맞는 선택이 가능하다.
Web Storage는 Local Storage와 Session Storage 두 가지 방식이 있다.
// localStorage 저장
localStorage.setItem('token', 'XXXXXXXX');
localStorage.setItem('token', JSON.stringfy(value));
// localStorage 조회
localStorage.getItem('token');
JSON.parse(localStorage.getItem('token'));
// localStorage 설정된 키로 삭제
localStorage.removeItem('token');
// localStorage 전체 삭제
localStorage.clear();
// sessionStorage 저장
sessionStorage.setItem('token', 'XXXXXXXX');
sessionStorage.setItem('token', JSON.stringfy(value));
// sessionStorage 조회
sessionStorage.getItem('token');
JSON.parse(sessionStorage.getItem('token'));
// sessionStorage 설정된 키로 삭제
sessionStorage.removeItem('token');
// sessionStorage 전체 삭제
sessionStorage.clear();
*cookie property
property | 설명 |
---|---|
name= | 쿠키의 이름과 값을 설정 |
expires= | 쿠키가 만료일 설정 (expires 값이 없으면 브라우저를 닫을때 소멸) |
path= | 쿠키가 적용될 사이트의 패스를 지정하고자 하는 경우 사용 |
domain= | 쿠키를 사용할 도메인을 지정 |
httpOnly | 자바스크립트에서 쿠키에 접근할 수 없다. |
// 쿠키 생성하기
const setCookie = (name, value, expiredays) => {
const today = new Date();
today.setDate(today.getDate() + expiredays);
document.cookie = `${name}=${escape(value)}; path=/; expires=${today.toGMTString()};`;
};
// 쿠키 조회하기
const getCookie = (key) => {
let result = null;
const cookie = document.cookie.split(';');
cookie.some((val) => {
val = val.replace(' ', '');
const dic = val.split('=');
if (key === dic[0]) return (result = dic[1]);
});
return result;
};
setCookie('쿠키생성', '여기는 내용', 1); // 만료일 : 1일
getCookie('쿠키생성');
Local Storage | Session Storage | Cookie | |
---|---|---|---|
저장 위치 | 클라이언트에 존재 (서버 전송 X) | 클라이언트에 존재 (서버 전송 X) | 매번 서버로 전송되어 서버에 저장 |
데이터 유지 측면 | 영구보관 | 브라우저 종료시 삭제됨 | 반영구 (만료일 설정) |
데이터 범위 측면 | 도메인만 같으면 전역적으로 공유 가능 | 도메인별로 별도로 생성 (공유 x) | |
지원 | html5 지원 브라우저 | html5 지원 브라우저 | 대부분의 브라우저 지원 |
용량 | 5MB | 5MB | 최대 쿠키 수: 20개, 최대쿠키 크기: 4KB |
추천 상황 | 자동 로그인, 다크/라이트 모드 | 입력 폼 정보, 비로그인 장바구니, 페이지 이동 시 스크롤 위치 값 | 팝업 창 |