크롬 개발자도구 > Application
탭에 들어가면 사진과 같이 여러가지 브라우저 저장소를 확인할 수 있다.
해당 게시글은 이 Application
탭에서 확인할 수 있는 주요 저장소인 Local storage, Session storage, Cookie, Cache, IndexedDB의 각 특징과 쓰임새에 대해서 살펴보고자 한다. (HTML5 미만의 구형 브라우저에 대해서는 생각하지 않음)
Extension storage : 외부 저장공간이 아닌 Chrome 확장 프로그램 저장용량을 뜻한다.
이는 모두 XSS 등에 의한 데이터 탈취 가능성이 존재하기 때문에, 민감한 정보는 BE단에서 처리하는 것이 좋다.
목차
브라우저에 데이터를 간단히 저장하는 JS 기반 저장소 API
key-value
쌍을 이루어 브라우저 메모리에 데이터를 저장하나, 저장방식 자체는 쿠키와 상이하다.
- 💡 같은 origin의 여러 브라우저 탭이 존재할 경우
- 각 탭은 서로 다른 session storage를 사용한다.
- session storage의 scope는 탭에 귀속된다.
localStorage
, sessionStorage
변수 사용브라우저 상의 noSQL 데이터베이스로 이해하면 쉽다.
key-value
쌍의 데이터를 저장한다.idb
, dexie
등의 라이브러리를 함께 사용한다.window.indexedDB
변수 사용 (브라우저별 변수명 상이)현재는 Web Storage API의 등장으로 쿠키 사용 빈도가 많이 줄어들었으나, 특정 케이스에서 쿠키 사용이 최적인 경우가 존재한다.
모든 HTTP request와 함께 전송된다.
해당 도메인의 전역적인 설정과 관련된 데이터 설정 시 유리할 수 있다.
HttpOnly
플래그가 설정된 쿠키 값은 JS를 통한 접근이 불가능하다.
document.cookie
를 통한 접근Secure
, HttpOnly
) 등을 설정하여 제어 (언어 / 환경 별 방법 상이)curl
, postman
등 HTTP 클라이언트를 통한 접근Network
) 조작 등브라우저에서 자동으로 정적(static)인 컨텐츠를 저장하는 것을 의미한다.
💡 정적 컨텐츠
- WAS(Web Application Server)와 WEB서버가 분리되어 있을 때, WEB서버에서 원활하게 구동되는 것들이다.
- e.g. HTML, 이미지, JS(script) / CSS(style sheet) 등
cache-control
(캐시 만료기간) 옵션 설정ver=
) 사용 (수기, 권장X)일반 CSS 로드 예시 : style.css
해시값 사용 예시 : style.4dgjf63.css # 번들러로 자동 생성 가능
--disk-cache-size=${cache_size}
커맨드 설정(크롬 기준)각 목적과 특징에 맞는 브라우저 저장소를 이용하자.
storage type | 저장형태 | (자동) 만료시간 | 특징 |
---|---|---|---|
Local storage | key-value(string) | X | 도메인 공유 |
Session storage | key-value(string) | 브라우저 탭 유지 동안 | 도메인 공유 |
IndexedDB | 다양한 자료구조 | X | 트랜잭션, 고용량 |
Cookie | key=value | Expires || Max-Age || X(세션쿠키) | HttpOnly 설정 가능 |
Cache | 정적 컨텐츠 자체 | 브라우저 자동 설정 | 적절한 활용 시 성능 향상 |
참고 자료
- MDN
- 기타 기술 블로그
- WHATWG - local storage
- imgix docs - Fingerprinting Images to Improve Page Load Speed
- stack overflow