localStorage, sessionStorage, 세션 및 쿠키의 차이점은 무엇입니까?


531

localStorage, sessionStorage, 세션 및 쿠키의 기술적 장단점은 무엇이며 언제 다른 것을 사용할 것입니까?


2
HTML5 로컬 스토리지와 세션 스토리지 ( stackoverflow.com/questions/5523140/… )
Sarin JS

2
또한 세션 쿠키는 브라우저 창이 열려있는 동안 만 설정됩니다 (설정된 탭이 아님) BUT sessionStorage는 탭을 닫 자마자
무효화됩니다

예 세션도 쿠키 유형입니다. 특징은 쿠키가 지속성 일 때 일시적이라는 것입니다.
Faris Rayhan

@ yar1 특정 브라우저 창은 관련이없는 UI 요소입니다.
curiousguy

답변:


717

이것은 매우 광범위한 질문이며, 많은 찬반 양론이 상황에 맥락이 있습니다.

모든 경우에 이러한 저장 메커니즘은 개별 컴퓨터 / 장치의 개별 브라우저에 따라 다릅니다. 여러 세션에 걸쳐 지속적으로 데이터를 저장하기 위해서는 데이터베이스, XML 또는 텍스트 / CSV 파일을 사용하는 응용 프로그램 서버 측이 필요합니다.

localStorage, sessionStorage 및 쿠키는 모두 클라이언트 스토리지 솔루션입니다. 세션 데이터는 서버에서 유지되며 사용자가 직접 제어 할 수 있습니다.

localStorage 및 sessionStorage

localStorage와 sessionStorage는 비교적 새로운 API (즉, 모든 레거시 브라우저가 지원하지는 않음)이며 지속성을 제외하고 거의 동일합니다 (API 및 기능 모두). sessionStorage (이름에서 알 수 있듯이)는 브라우저 세션 기간 동안 만 사용할 수 있으며 탭이나 창이 닫히면 삭제됩니다. 그러나 페이지 다시로드 후에도 지속됩니다 (소스 DOM 저장소 안내서-Mozilla 개발자 네트워크 ).

저장중인 데이터를 지속적으로 사용할 수 있어야하는 경우 sessionStorage보다 localStorage를 사용하는 것이 좋습니다. 그러나 사용자가 두 데이터를 모두 지울 수 있으므로 두 경우 모두 데이터의 지속적인 존재에 의존해서는 안됩니다.

localStorage 및 sessionStorage는 페이지간에 클라이언트 스크립트 내에서 필요한 중요하지 않은 데이터를 유지하는 데 적합합니다 (예 : 환경 설정, 게임 점수). localStorage 및 sessionStorage에 저장된 데이터는 클라이언트 / 브라우저 내에서 쉽게 읽거나 변경할 수 있으므로 응용 프로그램 내에서 중요하거나 보안 관련 데이터를 저장하는 데 의존해서는 안됩니다.

쿠키

쿠키의 경우에도 마찬가지입니다. 쿠키는 사용자가 쉽게 조작 할 수 있으며 데이터를 일반 텍스트로 읽을 수도 있습니다. 따라서 중요한 데이터를 저장하려면 세션이 유일한 옵션입니다. SSL을 사용하지 않는 경우 쿠키 정보는 특히 공개 Wi-Fi에서 전송 중에 차단 될 수 있습니다.

긍정적 인 측면에서 쿠키는 최신 (지원) 브라우저가 쿠키 및 JavaScript의 값에 액세스 할 수 없음을 의미하는 HTTP 전용 플래그를 설정하여 사이트 간 스크립팅 (XSS) / 스크립트 주입과 같은 보안 위험으로부터 어느 정도의 보호를 적용 할 수 있습니다 이렇게하면 자신의 합법적 인 JavaScript가 액세스하지 못하게됩니다. 이는 로그온 쿠키 사용자의 세부 정보가 포함 된 토큰을 저장하는 데 사용되는 인증 쿠키의 경우 특히 중요합니다. 쿠키의 사본이있는 경우 모든 의도와 목적을 위해 웹 애플리케이션이있는 한 해당 사용자가됩니다. 사용자와 동일한 데이터 및 기능에 액세스 할 수 있습니다.

쿠키는 사용자 데이터의 인증 및 지속성을 위해 사용되므로 페이지에 유효한 모든 쿠키 는 동일한 요청이있을 때마다 브라우저에서 서버로 전송됩니다. 여기에는 원본 페이지 요청, 모든 후속 Ajax 요청, 모든 이미지, 스타일 시트, 스크립트 및 글꼴. 따라서 쿠키를 사용하여 많은 양의 정보를 저장해서는 안됩니다. 브라우저는 쿠키에 저장 될 수있는 정보의 크기에 제한을 둘 수도 있습니다. 일반적으로 쿠키는 인증, 세션 및 광고 추적을위한 식별 토큰을 저장하는 데 사용됩니다. 토큰은 일반적으로 사람이 읽을 수있는 정보가 아니라 응용 프로그램이나 데이터베이스에 연결된 암호화 된 식별자입니다.

localStorage 대 세션 저장소 대 쿠키

기능 측면에서 쿠키, sessionStorage 및 localStorage를 사용하면 문자열 만 저장할 수 있습니다. 설정시 기본 값을 암시 적으로 변환 할 수 있지만 (읽은 후 유형으로 사용하려면 다시 변환해야 함) 객체 또는 배열은 아닙니다. (JSON을 직렬화하여 API를 사용하여 저장할 수 있습니다). 세션 스토리지는 일반적으로 서버 측 언어 / 프레임 워크가 지원하는 기본 요소 나 객체를 저장할 수있게합니다.

클라이언트 측과 서버 측

HTTP는 상태 비 저장 프로토콜이므로 웹 응용 프로그램은 웹 사이트로 돌아갈 때 이전 방문에서 사용자를 식별 할 수있는 방법이 없습니다. 세션 데이터는 일반적으로 쿠키 토큰을 사용하여 반복 방문을 위해 사용자를 식별합니다 (URL 매개 변수는 거의 사용되지 않을 수 있음) 같은 목적으로). 데이터는 일반적으로 슬라이딩 만료 시간 (사용자가 방문 할 때마다 갱신 됨)을 가지며, 서버 / 프레임 워크에 따라 데이터가 처리 중으로 저장되거나 (웹 서버가 충돌하거나 다시 시작하면 데이터가 손실 됨) 상태 서버 또는 데이터베이스 웹 팜 (주어진 웹 사이트에 둘 이상의 서버)을 사용할 때도 필요합니다.

세션 데이터는 응용 프로그램 (서버 쪽)에 의해 완벽하게 제어되므로 민감하거나 안전한 것이 가장 좋습니다.

서버 측 데이터의 명백한 단점은 확장 성입니다. 세션 기간 동안 각 사용자에게 서버 자원이 필요하며 클라이언트 측에 필요한 모든 데이터는 각 요청과 함께 전송되어야합니다. 서버가 사용자가 다른 사이트를 탐색하거나 브라우저를 닫는 지 여부를 알 방법이 없으므로 세션 데이터가 지정된 시간이 지나면 세션 세션이 만료되어 모든 서버 리소스가 사용되지 않도록해야합니다. 따라서 세션 데이터를 사용할 때는 특히 양식이 긴 페이지에서 데이터가 만료되어 손실 될 가능성을 알고 있어야합니다. 사용자가 쿠키를 삭제하거나 브라우저 / 장치를 전환하면 손실됩니다.

일부 웹 프레임 워크 / 개발자는 숨겨진 HTML 입력을 사용하여 세션 만료를 피하기 위해 양식의 한 페이지에서 다른 페이지로 데이터를 유지합니다.

localStorage, sessionStorage 및 쿠키는 모두 "동일 출처"규칙의 적용을 받으므로 브라우저가 정보를 시작하도록 설정 한 도메인을 제외한 데이터에 대한 액세스를 차단해야합니다.

클라이언트 스토리지 기술에 대한 자세한 내용은 Html 5로 다이빙을 참조하십시오 .


34
주의 : sessionStorage, localStorage는 인증 정보에 적합하지 않습니다. 서버로 자동 전송되지 않습니다. 즉, 사용자가 URL을 수동으로 변경하거나 HTML 링크를 클릭하면 인증 정보를 얻을 수 없습니다. HTML 링크를 다시 작성하더라도 보안 no-no 인 URL을 통해 인증 정보를 전달해야합니다. 하루가 끝나면 쿠키를 사용해야합니다. 관련 항목 은 stackoverflow.com/q/26556749/14731 을 참조하십시오 .
Gili

23
sessionStorage때 삭제 창이 닫혀 또는 탭?
trysis

34
탭을 닫으면 sessionStorage가 삭제됩니다.
rcarrillopadron

10
@Gili 쿠키를 사용하지 않는 경우 URL을 통해 인증 정보를 전달하는 유일한 옵션은 무엇입니까? 왜 HTTP 헤더로 전달하지 않습니까?
yby December

21
@Gili 자동으로 전송되지 않는다고 말하는 것이 맞지만 적절하지 않다고 말하는 것은 정확하지 않습니다. 나는 클라이언트를 위해 가지고있는 많은 다른 프로덕션 응용 프로그램에서 localStorage와 sessionStorage를 사용하고 헤더에 ID와 토큰을 보내는 것과 함께 localStorage / sessionStorage에 의존하기 때문에 하나의 취약점이 없었습니다. 서버의 부하도 줄어 듭니다. 또한 이벤트를 페이지 다시로드 및 응용 프로그램로드 후크에 바인딩 하여이 사용자가 여전히 인증했는지 여부를 백엔드에 묻습니다. 잘 작동합니다. 행복한 인증! 편집 : 더 많은 보안을 추가하는 모든 CSRF 토큰.
NodeDad

74
  1. 로컬 스토리지

    찬성 :

    1. 웹 스토리지는 쿠키의 개선으로 단순하게 볼 수있어 훨씬 더 큰 스토리지 용량을 제공합니다. Mozilla 소스 코드를 보면 5120KB ( Chrome의 250 만 자 에 해당 하는 5MB )가 전체 도메인의 기본 저장소 크기 임을 알 수 있습니다 . 따라서 일반적인 4KB 쿠키보다 훨씬 더 많은 공간을 사용할 수 있습니다.
    2. 모든 HTTP 요청 (HTML, 이미지, JavaScript, CSS 등)마다 데이터가 서버로 다시 전송되지 않으므로 클라이언트와 서버 간의 트래픽 양이 줄어 듭니다.
    3. localStorage에 저장된 데이터는 명시 적으로 삭제 될 때까지 지속됩니다. 변경 사항은 저장되어 현재 및 향후 사이트 방문시 사용할 수 있습니다.

    단점 :

    1. 동일 출처 정책 에서 작동합니다 . 따라서 저장된 데이터는 동일한 원본에서만 사용할 수 있습니다.
  2. 쿠키

    장점 :

    1. 다른 것에 비해 AFAIK는 없습니다.

    단점 :

    1. 4K 제한은 이름, 값, 만료 날짜 등을 포함한 전체 쿠키에 적용됩니다. 대부분의 브라우저를 지원하려면 이름을 4000 바이트 미만으로 유지하고 전체 쿠키 크기를 4093 바이트 미만으로 유지하십시오.
    2. 모든 HTTP 요청 (HTML, 이미지, JavaScript, CSS 등)에 대해 데이터가 서버로 다시 전송되어 클라이언트와 서버 간의 트래픽 양이 증가합니다.

      일반적으로 다음이 허용됩니다.

      • 300 개의 쿠키
      • 쿠키 당 4096 바이트
      • 도메인 당 쿠키 20
      • 도메인 당 81920 바이트 (최대 크기 4096 = 81920 바이트의 쿠키 20 개 제공)
  3. sessionStorage

    장점 :

    1. 와 비슷합니다 localStorage.
    2. 데이터는 영구적이지 않습니다. 즉, 데이터는 창 (또는 Chrome 및 Firefox와 같은 브라우저의 탭)에서만 사용할 수 있습니다. 데이터는 페이지 세션 중에 만 사용할 수 있습니다. 변경 사항은 현재 페이지와 동일한 창에서 나중에 사이트를 방문 할 때 저장 및 사용 가능합니다. 창이 닫히면 스토리지가 삭제됩니다.

    단점 :

    1. 데이터는 설정된 창 / 탭에서만 사용할 수 있습니다.
    2. 마찬가지로 동일한 출처 정책localStorage 에서 작동합니다 . 따라서 저장된 데이터는 동일한 원본에서만 사용할 수 있습니다.

탭 간 체크 아웃 -출처 간 브라우저 탭 간 통신을 용이하게하는 방법


13
쿠키 : " 모든 HTTP 요청에 대해 데이터가 서버로 다시 전송됩니다 ". 일부 유스 케이스 (인증 프로세스에서와 같이)에서도 이점으로 간주 될 수 있습니다. sessionStorage : " 변경 사항은 창 (또는 Chrome 및 Firefox와 같은 브라우저의 탭)마다 만 사용할 수 있습니다 ." " 페이지 세션 중에 만 변경 사항을 사용할 수 있습니다 "라는 공식을 작성하는 것이 좋습니다 . 페이지 세션은 브라우저가 열려 있고 페이지 재로드 및 복원 후에도 지속됩니다 (MDN : developer.mozilla.org/en/docs/Web/API/Window/sessionStorage )
Deniz

업데이트! 감사합니다 @DenizToprak
softvar

1
@softvar : sessionStorage-Con 2. : "데이터가 영구적이지 않습니다. 즉, 창 / 탭을 닫으면 손실됩니다." -이것은 분명히 결함이 아닙니다. 나는 그것이 이점이라고 말할 것입니다. 결국 "세션"스토리지입니다. 그것은 그런 식으로 작동하도록 설계되었습니다.
파괴자

@ devstructor Yea, 네 말이 맞아. 로컬에 일부 데이터를 저장하는 관점에서 생각했습니다. 답변을 업데이트했습니다. 지적 해 주셔서 감사합니다.
softvar

57

자, LocalStorage 는 브라우저의 로컬 스토리지라고 부르며 최대 10MB 까지 저장할 수 있으며 SessionStorage 는 동일하지만 세션 이름에 따라 세션 기반이며 브라우저를 닫은 후에 삭제되며 LocalStorage보다 적게 저장할 수 있습니다. 최대 5MB 와 같지만 쿠키 는 브라우저에 매우 작은 데이터 저장으로 4KB를 절약 할 수 있으며 서버 또는 브라우저를 통해 액세스 할 수 있습니다 ...

또한 차이점을 한 눈에 보여주기 위해 아래 이미지를 만들었습니다.

LocalStorage, SessionStorage 및 쿠키


25

문서가 DOM 객체를 보유하는 윈도우 객체의 속성 중 하나 인 것처럼 JavaScript에서 'window'객체의 속성입니다.

세션 저장소 속성은 페이지 세션 기간 동안 (예 : 페이지 다시로드 및 복원을 포함하여 브라우저가 열려있는 경우) 사용 가능한 각 원본에 대해 별도의 저장소 영역을 유지합니다.

로컬 저장소는 동일한 기능을 수행하지만 브라우저를 닫았다가 다시 열었을 때도 지속됩니다.

저장된 데이터를 다음과 같이 설정하고 검색 할 수 있습니다.

sessionStorage.setItem('key', 'value');

var data = sessionStorage.getItem('key');

localStorage와 유사합니다.


10
추가하기 만하면 sessionStorage새 탭도 새 창입니다. 따라서 한 탭의 특정 도메인에 저장된 항목은 다음 탭의 동일한 도메인에서 사용할 수 없습니다.
RBT

5

로컬 스토리지 : 사용자가 브라우저 창을 닫았을 때이 데이터는 삭제되지 않고 날짜, 주, 월 및 연도에 사용할 수있는 만료 날짜없이 사용자 정보 데이터를 저장합니다.

로컬 스토리지에서 5-10mb 오프라인 데이터를 저장할 수 있습니다.

//Set the value in a local storage object
localStorage.setItem('name', myName);

//Get the value from storage object
localStorage.getItem('name');

//Delete the value from local storage object
localStorage.removeItem(name);//Delete specifice obeject from local storege
localStorage.clear();//Delete all from local storege

세션 저장소 : 웹 사용자가 브라우저 창을 닫을 때 모든 창을 삭제한다는 점을 제외하면 로컬 저장소 날짜와 같습니다.

세션 저장소에서 최대 5MB의 데이터를 저장할 수 있습니다

//set the value to a object in session storege
sessionStorage.myNameInSession = "Krishna";

세션 : 세션은 서버에 저장된 전역 변수입니다. 각 세션에는 저장된 값을 검색하는 데 사용되는 고유 한 ID가 할당됩니다.

쿠키 : 쿠키는 컴퓨터에서 이름-값 쌍으로 작은 텍스트 파일에 저장되는 데이터입니다. 쿠키가 설정되면 뒤 따르는 모든 페이지 요청이 쿠키 이름과 값을 반환합니다.


2

Web Storage API는 브라우저가 쿠키를 사용하는 것보다 훨씬 직관적 인 방식으로 키 / 값 쌍을 안전하게 저장할 수있는 메커니즘을 제공합니다. 웹 스토리지 API는 확장 Window두 가지 새로운 특성을 가진 개체를 - Window.sessionStorageWindow.localStorage. —이 중 하나를 호출하면 데이터 항목을 설정, 검색 및 제거 할 수있는 Storage 객체의 인스턴스가 생성됩니다. sessionStoragelocalStorage각 출처 (도메인)마다 다른 저장소 개체가 사용됩니다 .

저장소 개체는 개체 와 비슷한 간단한 키-값 저장소 이지만 페이지로드를 통해 그대로 유지됩니다 .

localStorage.colorSetting = '#a4509b';
localStorage['colorSetting'] = '#a4509b';
localStorage.setItem('colorSetting', '#a4509b');

키와 값은 항상 문자열 입니다. 모든 유형convert it to String을 저장 한 다음 저장합니다. 항상Storage interface메소드를 사용하는것이 좋습니다.

var testObject = { 'one': 1, 'two': 2, 'three': 3 };
// Put the object into storage
localStorage.setItem('testObject', JSON.stringify(testObject));
// Retrieve the object from storage
var retrievedObject = localStorage.getItem('testObject');
console.log('Converting String to Object: ', JSON.parse(retrievedObject));

웹 저장소 내 두 가지 메커니즘은 다음과 같습니다.

  • sessionStorage 는페이지 재로드 및 복원을 포함하여 브라우저가 열려있는 한 페이지 세션 기간 동안 사용할 수있는각각의 지정된 출발지 동일 출처 정책 에 대해 별도의 저장 영역을 유지합니다.
  • localStorage 는 동일한 작업을 수행하지만 브라우저를 닫았다가 다시 열어도 지속됩니다.

저장소 « 로컬 저장소 는 데이터를 디스크에 쓰고 세션 저장소는 데이터를 메모리에만 씁니다. 앱이 종료되면 세션 저장소에 기록 된 모든 데이터가 제거됩니다.

가능한 최대 스토리지는 브라우저마다 차이가 있지만, 대부분의 브라우저는 W3C가 최대 저장 용량 제한 권장 적어도 구현 한 5메가바이트을 .

+----------------+--------+---------+-----------+--------+
|                | Chrome | Firefox | Safari    |  IE    |
+----------------+--------+---------+-----------+--------+
| LocalStorage   | 10MB   | 10MB    | 5MB       | 10MB   |
+----------------+--------+---------+-----------+--------+
| SessionStorage | 10MB   | 10MB    | Unlimited | 10MB   |
+----------------+--------+---------+-----------+--------+

항상 LocalStorage 보안을 유지하고 할당량 초과 오류

StorageEvent «저장 영역이 변경되면 저장 이벤트가 문서의 Window 객체에서 시작됩니다. 사용자 에이전트가 문서에 대한 스토리지 알림을 보내려면 사용자 에이전트는 StorageEvent를 사용하여 문서 오브젝트의 Window 오브젝트에서 스토리지라는 이벤트를 발생시키는 태스크를 큐에 넣어야합니다.

참고 : 실제 예는 웹 스토리지 데모를 참조하십시오 . 소스 코드를 확인하십시오

dom / Window에서 스토리지 이벤트를 수신하여 스토리지의 변경 사항을 포착하십시오. 바이올린 .


쿠키 (웹 쿠키, 브라우저 쿠키) 쿠키는 컴퓨터에서 작은 텍스트 파일에 이름-값 쌍으로 저장된 데이터입니다.

Document.cookie를 사용한 JavaScript 액세스

Document.cookie 속성을 사용하여 JavaScript를 통해 새 쿠키를 만들 수도 있고 HttpOnly 플래그를 설정하지 않으면 JavaScript에서도 기존 쿠키에 액세스 할 수 있습니다.

document.cookie = "yummy_cookie=choco"; 
document.cookie = "tasty_cookie=strawberry"; 
console.log(document.cookie); 
// logs "yummy_cookie=choco; tasty_cookie=strawberry"

안전하고 HttpOnly 쿠키 HTTP 상태 관리 메커니즘

쿠키는 종종 웹 응용 프로그램에서 사용자와 인증 된 세션을 식별하는 데 사용됩니다

HTTP 요청을 수신하면 서버는 응답과 함께 Set-Cookie 헤더를 보낼 수 있습니다 . 쿠키는 일반적으로 브라우저에 의해 저장되고 쿠키 HTTP 헤더 내의 동일한 서버에 대한 요청과 함께 쿠키가 전송됩니다.

Set-Cookie: <cookie-name>=<cookie-value> 
Set-Cookie: <cookie-name>=<cookie-value>; Expires=<date>

클라이언트가 종료되면 세션 쿠키 가 제거됩니다. Expires 또는 Max-Age 지시문을 지정하지 않습니다.

Set-Cookie: sessionid=38afes7a8; HttpOnly; Path=/

영구 쿠키 는 특정 날짜 (만료) 또는 특정 시간 (Max-Age) 후에 만료됩니다.

Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly

쿠키 HTTP 요청 헤더에는 Set-Cookie 헤더와 함께 서버가 이전에 보낸 저장된 HTTP 쿠키가 포함됩니다. XSS (Cross-Site Scripting)에 대한 공격을 완화하기 위해 XMLHttpRequest 및 Request API를 통해 Document.cookie 속성을 통해 JavaScript를 통해 HTTP 전용 쿠키에 액세스 할 수 없습니다.

쿠키는 주로 세 가지 목적으로 사용됩니다.

  • 세션 관리 «로그인, 쇼핑 카트, 게임 점수 또는 서버가 기억해야 할 기타
  • 개인화 «사용자 기본 설정, 테마 및 기타 설정
  • 추적 (사용자 동작 기록 및 분석)«쿠키에는 관련 도메인이 있습니다. 이 도메인이 현재 페이지의 도메인과 동일한 경우 쿠키는 자사 쿠키라고합니다. 도메인이 다른 경우 타사 쿠키라고합니다. 자사 쿠키는 쿠키를 설정하는 서버로만 전송되지만 웹 페이지에는 이미지 나 다른 도메인 (예 : 광고 배너)의 서버에 저장된 다른 구성 요소가 포함될 수 있습니다. 이러한 타사 구성 요소를 통해 전송되는 쿠키를 타사 쿠키라고하며 주로 웹을 통한 광고 및 추적에 사용됩니다.

쿠키는 "사용자에 관한 정보를 기억하는 방법"이라는 문제를 해결하기 위해 고안되었습니다.

  • 사용자가 웹 페이지를 방문하면 그의 이름을 쿠키에 저장할 수 있습니다.
  • 다음에 사용자가 페이지를 방문하면 해당 페이지에 속하는 쿠키가 요청에 추가됩니다. 이런 식으로 서버는 사용자에 대한 정보를 "기억"하는 데 필요한 데이터를 얻습니다.

GitHubGist 예제


요약하면

  • localStorage는 다른 탭이나 창에서 유지되며, 브라우저를 닫더라도 도메인 보안 정책 및 할당량 제한에 대한 사용자 선택에 따라 브라우저가 닫힙니다.
  • 우리가 다른 탭이나 창을 통해 서핑하면 존재하지 않기 때문에 sessionStorage 객체는 탭을 닫으면 지속되지 않습니다 (최상위 브라우징 컨텍스트).
  • 웹 저장소 (세션, 로컬)를 사용하면 쿠키를 통해 불가능한 많은 양의 키 / 값 쌍과 많은 텍스트를 저장할 수 있습니다.
  • 민감한 작업에 사용되는 쿠키는 수명이 짧아야합니다.
  • 쿠키는 주로 웹에서 광고 및 추적에 사용됩니다. 예를 들어 Google에서 사용하는 쿠키 유형을 참조하십시오 .
  • 쿠키는 모든 요청과 함께 전송되므로 성능이 저하 될 수 있습니다 (특히 모바일 데이터 연결의 경우). 클라이언트 스토리지를위한 최신 API는 웹 스토리지 API (localStorage 및 sessionStorage) 및 IndexedDB입니다.

2

로컬 스토리지 :

  • 웹 스토리지는 쿠키의 개선으로 단순하게 볼 수있어 훨씬 더 큰 스토리지 용량을 제공합니다. 사용 가능한 크기는 5MB로 일반적인 4KB 쿠키보다 훨씬 더 많은 공간을 사용할 수 있습니다.

  • 모든 HTTP 요청 (HTML, 이미지, JavaScript, CSS 등)마다 데이터가 서버로 다시 전송되지 않으므로 클라이언트와 서버 간의 트래픽 양이 줄어 듭니다.

  • localStorage에 저장된 데이터는 명시 적으로 삭제 될 때까지 지속됩니다. 변경 사항은 저장되어 현재 및 향후 사이트 방문시 사용할 수 있습니다.

  • 동일 출처 정책에서 작동합니다. 따라서 저장된 데이터는 동일한 원본에서만 사용할 수 있습니다.

쿠키:

  • 각 쿠키의 만료 시간을 설정할 수 있습니다

  • 4K 제한은 이름, 값, 만료 날짜 등을 포함한 전체 쿠키에 적용됩니다. 대부분의 브라우저를 지원하려면 이름을 4000 바이트 미만으로 유지하고 전체 쿠키 크기를 4093 바이트 미만으로 유지하십시오.

  • 모든 HTTP 요청 (HTML, 이미지, JavaScript, CSS 등)에 대해 데이터가 서버로 다시 전송되어 클라이언트와 서버 간의 트래픽 양이 증가합니다.

sessionStorage :

  • localStorage와 유사합니다.
  • 창 또는 Chrome 및 Firefox와 같은 브라우저의 탭에서만 변경 사항을 사용할 수 있습니다. 변경 사항은 현재 페이지와 동일한 창에서 나중에 사이트를 방문 할 때 저장 및 사용 가능합니다. 창을 닫으면 스토리지가 삭제됩니다. 데이터는 설정된 창 / 탭에서만 사용할 수 있습니다.

  • 데이터는 영구적이지 않습니다. 즉, 창 / 탭을 닫으면 손실됩니다. localStorage와 마찬가지로 동일한 출처 정책에서 작동합니다. 따라서 저장된 데이터는 동일한 원본에서만 사용할 수 있습니다.


0

여기에 간단한 검토와 간단하고 빠른 이해가 있습니다

여기에 이미지 설명을 입력하십시오

교사 보 카 안스 에서 freecodecamp

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.