"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 웹 스토리지 이해

웹 스토리지 이해

2024-11-07에 게시됨
검색:231

Understanding Web Storage

목차

  • 쿠키
  • 로컬 저장소
  • 세션 저장소
  • 인덱싱된DB
  • 비교 분석
  • 보안 고려 사항
  • 결론

소개

데이터 저장은 최신 웹 애플리케이션의 중요한 측면입니다. 사용자 기본 설정 저장, 오프라인 사용을 위한 데이터 캐싱, 세션 추적 등 브라우저에서 데이터를 관리하는 방법은 사용자 경험에 큰 영향을 미칠 수 있습니다. 브라우저에 데이터를 저장하기 위한 여러 가지 옵션이 있으며 각 옵션에는 고유한 장점과 사용 사례가 있습니다. 이 문서에서는 로컬 저장소, 세션 저장소, IndexedDB 및 쿠키를 포함하여 최신 브라우저에서 사용할 수 있는 다양한 저장소 옵션을 살펴보고 이를 효과적으로 사용하는 시기와 방법에 대한 통찰력을 제공합니다.


쿠키

쿠키는 사용자의 브라우저에 직접 저장되는 작은 데이터 조각입니다. 주로 세션 추적, 사용자 기본 설정 저장 및 인증 관리에 사용됩니다. 로컬 저장소 및 세션 저장소와 달리 쿠키는 모든 HTTP 요청과 함께 서버로 전송되므로 서버 측 작업에 적합합니다.

주요 특징

  • 용량: 쿠키당 4KB로 제한됩니다.
  • 지속성: 쿠키에는 만료 날짜가 있어 지속성 또는 세션 기반으로 만들 수 있습니다.
  • 접근성: 클라이언트 측(JavaScript를 통해)과 서버 측 모두에 액세스할 수 있습니다.

사용 예:

document.cookie = "username=Mario; expires=Fri, 31 Dec 2024 23:59:59 GMT; path=/"; // Save data

const cookies = document.cookie; // Retrieve data

장점

  • 클라이언트 측 및 서버 측 데이터 저장소 모두에 사용할 수 있습니다.
  • 영구 저장소의 만료 날짜를 지원합니다.

단점

  • 저장 용량이 작습니다.
  • 모든 HTTP 요청과 함께 전송되며 잠재적으로 성능에 영향을 미칠 수 있습니다.

쿠키는 세션 관리, 추적, 서버에서 액세스해야 하는 소량의 데이터 처리와 같은 작업에 이상적입니다.


로컬 저장소

로컬 스토리지는 만료 시간 없이 웹 브라우저에 키-값 쌍을 저장할 수 있는 웹 스토리지 솔루션입니다. 즉, 브라우저를 닫았다가 다시 열어도 데이터가 유지됩니다. 로컬 저장소는 일반적으로 사용자 기본 설정 저장, 데이터 캐싱 및 영구 저장소가 필요한 기타 작업에 사용됩니다.

사용 예:

localStorage.setItem('username', 'Mario'); // Save data

const username = localStorage.getItem('username'); // Retrieve data

localStorage.removeItem('username'); // Remove data

주요 특징

  • 간단한 API: 로컬 저장소는 데이터를 저장하고 검색하기 위한 간단한 API를 제공합니다.
  • 용량: 로컬 저장소는 일반적으로 도메인당 최대 5~10MB의 저장소를 제공하며 이는 쿠키보다 훨씬 큽니다.
  • 지속성: 로컬 저장소에 저장된 데이터는 명시적으로 삭제될 때까지 브라우저 세션 전반에 걸쳐 지속됩니다.
  • 접근성: 클라이언트 측에서 JavaScript를 통해 액세스할 수 있습니다.

장점

  • 간단한 키-값 쌍으로 사용하기 쉽습니다.
  • 데이터는 세션 전반에 걸쳐 유지됩니다.

단점

  • IndexedDB에 비해 저장 용량이 제한되어 있습니다.
  • 보안 기능이 내장되어 있지 않습니다. 페이지의 모든 스크립트에서 데이터에 액세스할 수 있습니다.

세션 저장

세션 저장소는 로컬 저장소와 유사하지만 한 가지 주요 차이점이 있습니다. 데이터는 페이지 세션 동안에만 저장됩니다. 브라우저 탭을 닫으면 데이터가 지워집니다. 따라서 세션 저장소는 다단계 양식을 탐색하는 동안 양식 입력을 유지하는 등 임시 데이터 저장에 이상적입니다.

사용 예:

sessionStorage.setItem('cart', 'coffee'); // Save data

const cartItem = sessionStorage.getItem('cart'); // Retrieve data

sessionStorage.removeItem('cart'); // Remove data

주요 특징

  • 용량: 로컬 저장소와 유사하며 약 5~10MB의 저장 공간이 있습니다.
  • 지속성: 데이터는 브라우저 탭이 닫힐 때까지만 지속되지만 페이지를 다시 로드해도 유지됩니다.
  • 접근성: 클라이언트 측에서 JavaScript를 통해 액세스할 수 있습니다.

장점

  • 임시 데이터에 사용하기 쉽습니다.
  • 세션 내에서 데이터를 격리된 상태로 유지합니다.

단점

  • 세션 기간이 제한되어 있어 장기 보관에는 적합하지 않습니다.
  • 로컬 저장소와 마찬가지로 데이터는 페이지의 모든 스크립트에서 액세스할 수 있으므로 기본 제공 보안이 부족합니다.

세션 저장소는 세션 전체에 걸쳐 데이터를 유지하지 않고 사용자 세션 동안 상태를 유지하는 등 단일 세션 내의 임시 데이터 저장 요구 사항에 특히 유용합니다.


IndexedDB

IndexedDB는 사용자의 브라우저에 파일 및 blob을 포함하여 대량의 구조화된 데이터를 저장하기 위한 하위 수준 API입니다. 로컬 스토리지 및 세션 스토리지와 달리 IndexedDB는 쿼리, 트랜잭션 및 인덱스를 사용하여 보다 복잡한 데이터 저장 및 검색을 허용하는 본격적인 데이터베이스입니다.

주요 특징

  • 용량: 사용자의 디스크 공간에 의해서만 제한되는 대용량 데이터를 저장할 수 있습니다.
  • 구조: 키-값 쌍, 복잡한 데이터 유형 및 계층 구조를 갖춘 구조화된 데이터 저장소를 지원합니다.
  • 접근성: 비차단 작업을 허용하는 비동기 API입니다.

사용 예:

const request = indexedDB.open('myDatabase', 1);

request.onupgradeneeded = function(event) {
  const db = event.target.result;
  const objectStore = db.createObjectStore('users', { keyPath: 'id' });
  objectStore.createIndex('name', 'name', { unique: false });
};

request.onsuccess = function(event) {
  const db = event.target.result;
  const transaction = db.transaction(['users'], 'readwrite');
  const objectStore = transaction.objectStore('users');
  objectStore.add({ id: 1, name: 'Mario', age: 30 });
};

장점

  • 대규모 구조화된 데이터 저장에 이상적입니다.
  • 고급 쿼리 및 색인 생성을 지원합니다.

단점

  • 로컬 저장소 및 세션 저장소에 비해 구현이 더 복잡합니다.
  • 비동기 특성으로 인해 제대로 관리되지 않으면 코드가 복잡해질 수 있습니다.

IndexedDB는 오프라인 지원 앱, 복잡한 데이터 조작, 고급 클라이언트 측 스토리지 요구 사항 등 대량의 구조화된 데이터를 저장하고 관리해야 하는 애플리케이션에 적합합니다.


비교 분석

올바른 저장 방법을 선택하는 것은 웹 애플리케이션의 특정 요구 사항에 따라 다릅니다. 결정하는 데 도움이 되는 간단한 비교는 다음과 같습니다.

  • 쿠키: 특히 세션 관리 및 추적을 위해 클라이언트와 서버 모두에서 액세스해야 하는 작은 데이터 조각에 적합합니다.
  • 로컬 스토리지: 보안이나 대용량이 필요하지 않은 간단하고 지속적인 데이터 스토리지에 가장 적합합니다. 사용자 기본 설정이나 설정에 적합합니다.
  • 세션 저장소: 탐색 중 양식 입력과 같이 단일 세션 내에서만 유지되어야 하는 임시 데이터에 적합합니다.
  • IndexedDB: 대량의 구조화된 데이터를 저장하는 데 적합한 옵션입니다. 강력하지만 복잡성이 더해졌습니다.

보안 고려 사항

  • 쿠키: Secure 및 HttpOnly 플래그는 보안을 강화할 수 있습니다.
  • 로컬/세션 저장소: 데이터는 JavaScript를 통해 액세스할 수 있으므로 제대로 처리하지 않으면 보안이 약해집니다.
  • IndexedDB: 일반적으로 안전하지만 올바르게 관리하지 않으면 XSS 공격에 여전히 취약합니다.

저장 방법을 선택할 때는 데이터 양, 지속성의 필요성, 접근성 요구 사항, 보안 영향을 고려하세요.


결론

강력하고 사용자 친화적인 웹 애플리케이션을 구축하려면 다양한 웹 저장소 옵션을 이해하고 효과적으로 활용하는 것이 필수적입니다. 로컬 저장소, 세션 저장소, IndexedDB 및 쿠키 등 각 저장소 방법은 고유한 목적을 제공하며 뚜렷한 이점을 제공합니다. 애플리케이션 요구 사항에 따라 적절한 스토리지 솔루션을 선택하면 성능을 향상하고 사용자 경험을 개선하며 데이터 보안을 보장할 수 있습니다.

간단하고 지속적인 저장소, 임시 세션 기반 저장소, 복잡한 데이터 관리 또는 서버 측 데이터 액세스가 필요하다면 요구 사항에 맞는 저장소 옵션이 있습니다.

릴리스 선언문 이 글은 https://dev.to/mario130/understanding-web-storage-j0f?1 에서 복제하였습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3