웹 스토리지 객체(web storage object)인 localStorage
와 sessionStorage
는 브라우저 내에 키-값 쌍을 저장할 수 있게 해줍니다. 이 둘을 사용하면 페이지를 새로 고침하고(sessionStorage
의 경우) 심지어 브라우저를 다시 실행해도(localStorage
의 경우) 데이터가 사라지지 않고 남아있습니다.
그런데 "쿠키를 사용하면 브라우저에 데이터를 저장할 수 있는데, 왜 또 다른 객체를 사용해 데이터를 저장하는 걸까요?"라는 의문이 들 수 있습니다. 쿠키 이외에도 다른 방식을 사용하는 이유는 다음과 같습니다.
- 쿠키와 다르게 웹 스토리지 객체는 네트워크 요청 시 서버로 전송되지 않습니다. 이런 특징 때문에 쿠키보다 더 많은 자료를 보관할 수 있습니다. 대부분의 브라우저가 최소 2MB 혹은 그 이상의 웹 스토리지 객체를 저장할 수 있도록 해줍니다. 또한 개발자는 브라우저 내 웹 스토리지 구성 방식을 설정할 수 있습니다.
- 쿠키와 또 다른 점은 서버가 HTTP 헤더를 통해 스토리지 객체를 조작할 수 없다는 것입니다. 웹 스토리지 객체 조작은 모두 자바스크립트 내에서 수행됩니다.
- 웹 스토리지 객체는 도메인·프로토콜·포트로 정의되는 오리진(origin)에 묶여있습니다. 따라서 프로토콜과 서브 도메인이 다르면 데이터에 접근할 수 없습니다.
localStorage
의 주요 기능은 다음과 같습니다.
- 오리진이 같은 경우 데이터는 모든 탭과 창에서 공유됩니다.
- 브라우저나 OS가 재시작하더라도 데이터가 파기되지 않습니다.
sessionStorage
의 주요 기능은 다음과 같습니다.
sessionStorage
는 현재 떠 있는 탭 내에서만 유지됩니다.- 같은 페이지라도 다른 탭에 있으면 다른 곳에 저장되기 때문입니다.
- 그런데 하나의 탭에 여러 개의 iframe이 있는 경우엔 동일한 오리진에서 왔다고 취급되기 때문에
sessionStorage
가 공유됩니다.
- 페이지를 새로 고침할 때
sessionStorage
에 저장된 데이터는 사라지지 않습니다. 하지만 탭을 닫고 새로 열 때는 사라집니다.
'IT 학습 > Javascript' 카테고리의 다른 글
정규 표현식 에서의 특수 문자 이스케이프 (feat: 및줄) (2) | 2023.10.30 |
---|---|
Babel과 Webpack 그리고 polyfill 이란 (0) | 2023.08.23 |
SEO (검색엔진 최적화) (0) | 2023.08.21 |
Next.js의 데이터 패칭 (0) | 2023.08.17 |
이벤트 버블링 & 캡처링 & 위임 (0) | 2023.08.16 |