localStorage
와 sessionStorage
는 웹 브라우저에서 데이터를 클라이언트 측에 저장하는 데 사용되는 일종의 웹 전용 저장소이다. 이 두가지 개념은 프론트엔드 웹 개발에 있어서 기본적인 사항이므로 보다 자세히 짚고 넘어가자.
localStorage
는 웹 브라우저 내에 데이터를 영구적으로 저장하는 데 사용되는 웹 스토리지 저장소이다. 이 데이터는 사용자가 웹 페이지를 닫아도 브라우저 세션 간에도 지속된다.
영구적 데이터 저장
localStorage
에 저장된 데이터는 브라우저 세션 간에 지속된다. 사용자가 브라우저를 닫더라도 데이터는 유지된다.
도메인 공유
localStorage
는 도메인 별로 데이터가 공유된다. 같은 도메인 내에서 여러 페이지 간에 데이터를 공유할 수 있다.
저장 형식
데이터는 key
-value
쌍으로 저장되며, 데이터는 문자열 형태로 저장된다. 객체나 배열과 같은 복잡한 데이터 구조는 문자열로 직렬화되어 저장되어야 한다.
// 데이터 저장
localStorage.setItem('username', 'John');
localStorage.setItem('age', 22);
// 데이터 불러오기
const username = localStorage.getItem('username');
const age = localStorage.getItem('age');
// 데이터 삭제
localStorage.removeItem('username');
// 모든 데이터 삭제
localStorage.clear();
사용자 설정 및 환경 설정 저장
사용자가 웹 애플리케이션의 테마, 언어 설정과 같이 영구적으로 유지되어야 하는 설정을 저장하는 데 적합하다.
사용자의 기본 설정을 저장하고 웹 페이지를 방문할 때마다 해당 설정을 적용할 수 있다.
자동 로그인 유지
사용자의 로그인 정보를 저장하여 다음 방문 때 자동 로그인 기능을 구현할 때 유용하다. 사용자가 로그인한 상태를 지속시켜서 편의성을 제공할 수 있다.
최근 본 항목 저장
사용자가 최근에 본 상품, 페이지 등을 저장하여 추후에 쉽게 접근할 수 있도록 할 수 있다.
sessionStorage
는 웹 브라우저 내에 데이터를 세션 동안만 유지하는 데 사용되는 웹 스토리지 저장소이다. 세션이 종료되면 데이터도 함께 삭제된다.
세션 기반 데이터 저장
sessionStorage
에 저장된 데이터는 브라우저 세션 동안에만 유지된다. 브라우저 창이나 탭을 닫을 경우 데이터도 함께 삭제된다.
도메인 공유
sessionStorage
도 도메인 별로 데이터가 공유되며, 같은 도메인 내에서 여러 페이지 간에 데이터를 공유할 수 있다.
저장 형식
localStorage
와 마찬가지로 key
-value
쌍으로 데이터를 저장하며, 데이터는 문자열로 저장된다.
임시 데이터 저장
사용자가 현재 세션 동안만 필요한 데이터를 저장하는 데 사용된다. 로그인한 유저 혹은 임시 장바구니나 폼 데이터와 같이 현재 세션 내에서만 유지해야 하는 데이터를 저장할 수 있다.
웹 페이지 간 데이터 공유
사용자가 여러 탭이나 창을 열어 웹 페이지 간에 데이터를 공유해야 할 때 유용하다. 예를 들어, 사용자가 여러 탭에서 동일한 세션 데이터를 공유하고자 할 때 활용할 수 있다.
단기 세션 관리
웹 애플리케이션에서 간단한 세션 관리를 위해 사용될 수 있다. 예를 들어, 임시 작업 상태를 유지하거나 페이지 이동 간의 데이터 전달에 활용할 수 있다.
// 데이터 저장
sessionStorage.setItem('language', 'english');
sessionStorage.setItem('theme', 'light');
// 데이터 불러오기
const language = sessionStorage.getItem('language');
const theme = sessionStorage.getItem('theme');
// 데이터 삭제
sessionStorage.removeItem('theme');
// 모든 데이터 삭제 (세션 종료 시 자동으로 삭제됨)
sessionStorage.clear();
보안 문제
웹 스토리지는 클라이언트 측에서 동작하므로 보안에 민감한 정보를 저장하기에는 적합하지 않다. 또한 브라우저의 개발자 도구를 사용하면 저장된 데이터를 확인, 수정, 삭제할 수 있으므로 보안과 관련된 주의가 필요하다.
호환성
데이터 크기 제한이 있을 수 있으며, 또한 브라우저마다 지원 여부와 동작 방식이 다를 수 있으므로 사용 시 주의가 필요하다.
저장 형태
데이터를 저장할 때는 JSON.stringify()
와 JSON.parse()
와 같은 메서드를 사용하여 객체나 배열과 같은 복잡한 데이터를 문자열로 변환하고 역변환해야 할 수 있다.