Web Storage
Web Storage란 HTML5부터 제공하는 기능으로, 해당 도메인과 관련된 특정 데이터를 서버가 아니라 클라이언트 웹브라우저에 저장할 수 있도록 제공하는 기능이다. 쿠키(cookie)와 비슷한 기능이다.
Web Storage의 개념은 key와 value로 이루어진 한 쌍으로 데이터를 저장하고, 키를 기반으로 데이터를 조회하는 패턴이다. 영구저장소(LocalStorage)와 임시저장소(SessionStorage)를 따로 두어 데이터의 지속성을 구분할 수 있어 응용 환경에 맞는 선택이 가능하다.
쿠키와 마찬가지로 사이트의 도메인 단위로 접근이 제한된다.
필요한 이유
쿠키는 Web Storage와 마찬가지로 브라우저에 저장되지만 단점이 있다.
1. 4KB의 데이터 저장 제한
2. HTTP Request에 암호화 되지 않은 상태로 사용하기 때문에 보안에 취약하다.
3. 쿠키는 모든 HTTP Request에 포함되어 있어 웹서비스 성능에 영향을 줄 수 있다.
하지만 Web Storage를 사용하면 이러한 단점들을 극복할 수 있다.
Cookie vs Web Storage
- 쿠키는 매번 서버로 전송된다.
- 웹사이트에서 쿠키를 설정하면 이후 모든 웹 요청은 쿠키정보를 포함해 서버로 전송되지만, Web Storage는 저장된 데이터가 클라이언트에 존재할 뿐 서버로 전송되지는 않아서 네트워크 트래픽 비용을 줄일 수 있다.
- Web Storage는 단순 문자열을 넘어(스크립트) 객체정보를 저장할 수 있다.
- 문자열 기반 데이터 외에 체계적으로 구조화된 객체를 저장할 수 있다. 이는 개발 편의성을 제공해준다. 단, 브라우저의 지원 여부를 확인해야 한다.
- Web Storage는 용량의 제한이 없다.
- 쿠키는 클라이언트에 최대 300개, 도메인에 최대 20개의 제한이 있고, 각 쿠키의 용량으니 4KB의 제한이 있다. 그러나 Web Storage에는 제한이 없다. 쿠키도 하위키를 이용하면 이러한 제한을 일부 해소할 수는 있으나, 대용량으로 쿠키를 저장할 일은 없다.
- Web Storage는 영구 데이터 저장이 가능하다.
- Web Storage는 만료기간의 설정이 없다. 즉, 한 번 저장한 데이터는 영구적으로 존재하게 된다. 하지만 쿠키는 만료일자가 존재하며 언젠가 제거된다. 만약 쿠키에 만료일자를 지정하지 않으면 세션 쿠키가 되어 웹 브라우저 세션이 있는 기간동안 저장되며, 그 브라우저를 닫을때 사라진다.
Web Storage의 종류
Web Storage는 지속성에 따라 Local Storage와 Session Storage로 나눌 수 있다.
1. LocalStorage
- 저장한 데이터를 명시적으로 지우지 않는한 영구적으로 보관이 가능하다. 도메인마다 별도로 LocalStorage가 생성되며, 도메인만 같다면 전역적으로 공유가 가능하다.
- 도메인마다 별도로 LocalStorage가 생성
- Windows 전역 객체의 LocalStorage라는 컬렉션을 통해 저장과 조회가 이루어진다.
- SessionStorage
- 데이터의 지속성과 액세스 범위에 특수한 제한이 존재한다. 도메인마다 별도로 생성되는 점은 LocalStorage와 같지만, 같은 사이트의 도메인이라도 브라우저가 다르면 서로 다른 영역이 된다.
- 이는 브라우저 컨텍스트가 다르기 때문(브라우저가 불러온 웹페이지가 다르기 때문이라고 생각하면 된다))
- Windows 전역 객체의 SessionStorage라는 컬렉션을 통해 저장과 조회가 이루어진다.