◎ 쿠키는 클라이언트에 대한 정보를 이용자의 PC의 하드디스크에 보관하기 위해서 웹 사이트에서 클라이언트의 웹 브라우저에 전송하는 정보이다.
웹 사이트에서 쿠키를 설정하면 이후 모든 웹 요청은 쿠키 정보를 포함하여 서버로 전송된다.
쿠키는 개수와 용량에 있어 제한을 걸어 두고 있다. 하나의 사이트에서 저장할 수 있는 최대 쿠키 수는 20개이며, 하나의 사이트에서 저장할 수 있는 최대 쿠키 크기는 4KB로 제한되어 있다.
쿠키는 만료일자를 지정하게 되어 있어 언젠간 제거된다. 만료일자로 지정된 날짜에 쿠키는 제거되는 것이다. (만료일자를 지정하지 않으면 세션 쿠키가 된다.)
+ 장점 : 대부분의 브라우저에 지원이 다 된다.
- 단점 : api가 한번 더 호출되므로 서버에 부담이 증가된다.
◎ HTML5에는 웹 사이트의 데이터를 클라이언트에 저장할 수 있는 새로운 자료구조인 WebStorage 스펙이 포함되어있다.
Web Storage의 개념은 키/값 쌍으로 데이터를 저장하고 키를 기반으로 데이터를 조회하는 패턴이다.
그리고 영구저장소(LocalStorage)와 임시저장소(SessionStorage)를 따로 두어 데이터의 지속성을 구분할 수 있어 응용 환경에 맞는 선택이 가능하다.
쿠키와 거의 차이가 없어 보일지라도 몇 가지 쿠키의 단점을 극복하는 개선점이 도입되었다.
저장된 데이터가 클라이언트에 존재할 뿐 서버로 전송은 이루어지지 않는다. 이것은 네트워크 트래픽 비용을 줄여 준다는 주요한 장점이 된다.
WebStorage는 용량의 제한이 없다.
만료기간의 설정이 없다. 즉 한번 저장한 데이터는 영구적으로 존재하는 것이다.
데이터의 지속성과 관련하여 두 가지 용도의 저장소를 제공한다. (LocalStorage, SessionStorage)
◎ LocalStorage는 저장한 데이터를 지우지 않는 이상 영구적으로 보관이 가능하다. 도메인마다 별도로 로컬 스토리지가 생성이 된다는 것이다. Windows 전역 객체의 LocalStorage라는 컬렉션을 통해 저장/조회가 이루어진다.
+ 장점 : 서버에 불필요한 데이터를 저장을 안 하고, 용량이 크다.
- 단점 : HTML4만 지원되는 브라우저에는 지원이 안된다.
localStorage.setItem("access_token", "Jintae");// 저장localStorage.getItem("access_token");// 조회 : JintaelocalStorage.removeItem("access_token");// access_token 으로 설정된 키로 접근하여 삭제localStorage.clear();// 전체 삭제
◎ SessionStorage는 세션 종료 시(브라우저를 닫을 경우) 클라이언트에 대한 정보가 삭제된다.
SessionStorage는 windows 전역 객체의 SessionStorage라는 컬렉션을 통해 저장/조회가 이루어진다.
+ 장점 : LocalStorage와 같음. 단지 기능 차이
- 단점 : LocalStorage와 같음. 단지 기능 차이
sessionStorage.setItem("access_token", "Jintae");// 저장
sessionStorage.getItem("access_token");// 조회 : Jintae
sessionStorage.removeItem("access_token")l// access_token 으로 설정된 키로 접근하여 삭제
sessionStorage.clear();// 전체 삭제
- 팝업 창 : Cookie
- 자동 로그인 : LocalStorage
- 입력 폼 정보 : SessionStorage
- 비로그인 장바구니 : SessionStorage
→ 세션은 세버에 데이터 저장 즉, 서버의 자원을 사용하기 때문에 서버 자원에 한계가 있고 속도 저하도 올 수 있음
Cookie: 팝업 창, n일 동안 보지 않기, 비로그인 장바구니
Local Storage: 자동 로그인, 사용자 언어 선택, 글 임시 저장
Session Storage: 입력 폼 정보, 이전 페이지 저장, 이전 스크롤 위치 저장