HTML5 로컬 저장소 및 세션 저장소


561

비 영구적이고 현재 창에만 적용되는 것 외에도 로컬 저장소를 통한 세션 저장소의 이점 (성능, 데이터 액세스 등)이 있습니까?


15
@robert-당신이 틀렸다고 생각합니다. w3.org/TR/webstorage sessionStorage 에서 StorageStorage 는 "최상위 브라우징 컨텍스트"로 범위가 지정되며 이는 각 브라우저 탭 / 창에 고유함을 의미합니다. localStorage의 범위는 원본으로, 이는 동일한 원본의 모든 페이지에서 공유됨을 의미합니다.
broofa


답변:


812

localStoragesessionStorage는 모두 Storage를 확장 합니다. 의 "비 지속성"을 제외하고는 차이점이 없습니다 sessionStorage.

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

를 들어 sessionStorage, 변경 탭 당 만 사용할 수 있습니다. 변경 사항은 해당 탭 의 현재 페이지 에서 닫힐 때까지 저장되어 사용할 수 있습니다 . 일단 닫히면 저장된 데이터가 삭제됩니다.


17
여기에서 도움이 될만한 더 넓은 토론이 있습니다 : stackoverflow.com/questions/19867599/…
Ed Sykes

13
http로 스토리지에 일부 데이터를 저장하면 https에서 검색 할 수 없습니다
Mark Thien

Chrome v41.x에서 이것을 테스트했으며 https에 대한 위의 진술이 사실이 아닌 것 같습니다. localStorage는 저장된 데이터를 유지합니다.
CCC

36
SessionStorage는 페이지를 다시로드하고 복원 한 후에도 유지되지만 새 탭 / 창을 열면 새 세션이 시작됩니다.
Patrick

160

유일한 차이점은 localStorage의 만료 시간이 다르고 sessionStorage생성 된 창이 열려있는 동안에 만 액세스 할 수 있다는 것입니다.
localStorage삭제하거나 사용자가 삭제할 때까지 지속됩니다.
당신은 당신이 사용하고자하는 것이다 로그인 사용자 이름과 암호를 저장하고 싶다고 말할 수 sessionStorage이상의 localStorage보안상의 이유로 (즉. 나중에 자신의 계정에 액세스 다른 사람).
그러나 사용자 설정을 컴퓨터에 저장하려면 원할 것입니다 localStorage. 전체적으로 :

localStorage-장기간 사용하십시오.
sessionStorage-변경되거나 일시적인 무언가를 저장해야 할 때 사용


103

로컬 스토리지와 세션 스토리지의 차이점을 이해하는 데 도움이 될만한 몇 가지 다른 점

  1. 로컬 저장소와 세션 저장소 모두 문서 원본으로 범위가 지정되므로

    https://mydomain.com/
    http://mydomain.com/
    https://mydomain.com:8080/

    위의 모든 URL 이 동일한 저장소를 공유 하지는 않습니다 . (웹 페이지의 통지 경로는 웹 스토리지에 영향을 미치지 않습니다)

  2. 원본 탭이 동일한 문서가 다른 탭에서 열린 문서의 경우에도 세션 저장소가 다르므로 두 개의 다른 탭에서 열린 동일한 웹 페이지 는 동일한 세션 저장소를 공유 할 수 없습니다 .

  3. 로컬 및 세션 스토리지 모두 브라우저 공급 업체에 의해 범위가 지정됩니다 . 따라서 IE에서 저장 한 스토리지 데이터는 Chrome 또는 FF에서 읽을 수 없습니다.

도움이 되었기를 바랍니다.


3
아니요, http와 https는 동일한 sessionStorage 공유이지만 localStorage는 공유하지 않습니다.
Shahdat

5
https 출처에서 sessionStorage를 먼저 설정하면 http에서 사용할 수 있지만 http에서 sessionStore를 만들면 http에서 사용할 수 없습니다.
Shahdat

4
@Shahdat, "https에서 사용할 수 없음"을 의미 했습니까?
Daniel Werner

3
@DanielWerner 예, http에서 sessionStore를 만들면 https에서 사용할 수 없습니다.
Shahdat

28

주요 차이점 localStoragesessionStoragesessionStorage탭마다 고유합니다. 탭을 닫으면 sessionStorage삭제 localStorage되지 않습니다. 또한 탭간에 통신 할 수 없습니다. :)

또 다른 미묘한 차이점은 예를 들어 Safari (8.0.3) localStorage에서 2551k 자로 제한되지만 저장 용량sessionStorage무제한이라는

크롬 (V43)의 양 localStoragesessionStorage5101 개 K 문자 (정상 / 된 시크릿 모드간에 차이)에 한정

파이어 폭스 모두 localStoragesessionStorage5120 개 K 문자 (정상 / 전용 모드간에 차이)에 한정

속도의 차이가 없습니다 :)

모바일 사파리 및 모바일 크롬에도 문제가 있습니다. 개인 모드 사파리 및 크롬의 최대 공간은 0KB입니다


1
5101k 자로 제한됩니까? .. 5.101 만 자?
Zze

@Zze 예, 일반적으로 1 문자는 1 바이트이므로 5 백만 문자는 5Mb의 저장 용량입니다.
Basim Khajwal

@BasimKhajwal 5MB입니다. 비트가 아닌 바이트.
Yeti

언급 한 내용에 출처를 추가 할 수 있습니까?
Mukus

@Mukus, 소스가 없으며 테스트를 직접 실행했으며 개인 모드 Safari와 관련하여 localStorage가 있지만 공간이 없으며 localStorage가 존재하기 때문에 polyfill이 트리거되지 않지만 스크립트를 저장할 수 없으므로 스크립트가 실패했습니다 거기에 아무것도. 이 도구를 사용하여 테스트 할 수도 있습니다 -dev-test.nemikor.com/web-storage/support-test
Eek

17

sessionStorage동일하다 localStorage단지 하나의 세션에 대한 데이터를 저장하고, 사용자가 생성 브라우저 창을 닫을 때 제거 될 것을 제외.


10

현명한 성능으로, 나의 (조잡한) 측정은 1000 번의 쓰기와 읽기에서 차이를 발견하지 못했습니다.

보안 측면에서 보면 직관적으로 localStore가 sessionStore 전에 종료 된 것처럼 보이지만 구체적인 증거는 없습니다.

현명한 기능, 위의 digitalFresh와 일치


1
페이지로드 성능 관련 : sessionStorage 및 localStorage는 모두 페이지로드 렌더링주기에서 시작되고 채워집니다. 따라서 초기 페이지로드 시간의 통행료는 브라우저 내에서 측정 할 수 없습니다.
Mirko

6

Ya 세션 저장소와 로컬 저장소는 로컬 저장소가 데이터를 저장할 때까지 사용자가 캐시와 쿠키를 삭제하지 않는 한 세션 i를 닫을 때까지 세션 저장소 데이터가 시스템에 유지됩니다. 세션 저장 영역 작성 창.


5

필자의 의견으로는 로컬 스토리지보다 세션 스토리지의 장점은 Firefox의 용량무제한 이며 세션보다 오래 지속되지 않는다는 것입니다. (물론 목표가 무엇인지에 달려 있습니다.)


2

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

//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

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

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

더 읽기 클릭


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