DESC

내가 보려고 쓰는 블로그

«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today
-
Yesterday
-
Total
-
  • sessionStorage & localStorage 사용
    Javascript 2020. 12. 29. 15:35
    반응형

    쿠키와 두 가지 스토리지 비교

    •   Cookie Session Stograge Local Storage
      만료 기간 별도 지정 현재 탭 유지 시 무제한
      용량 4KB 무제한
      HTTP 요청 포함 미포함
       

    참고 : https://developer.mozilla.org/ko/docs/Web/API/Window/sessionStorage

     

    Window.sessionStorage - Web API | MDN

    sessionStorage 읽기 전용 속성은 현재 출처 세션의 Storage 객체에 접근합니다. sessionStorage는 localStorage와 비슷하지만, localStorage의 데이터는 만료되지 않고, sessionStorage의 데이터는 페이지 세션이 끝날

    developer.mozilla.org

    [ 사용 예 ]

    별도 선언 없이 바로 사용 가능하다. (IE 8이상 지원)

    var userData = {id: 'hailey0', name: 'Hailey', grade: 'gold', locale: 'ko'};
    sessionStorage.setItem('user', userData);
    sessionStorage.setItem('userJson', JSON.stringify(userData));
    
    // window.sessionStorage 도 가능!

     

    쿠키의 경우 문자열로 저장되므로 라이브러리를 사용하지 않으면 getter setter 를 정의하여 사용해야하는 단점이 있지만, 스토리지의 경우 기본으로 제공된다. 위와 같이 여러 페이지에서 사용할 데이터 이지만, 다른 http 통신에는 사용할 필요가 없는 경우 sessionStorage 를 이용하면 편리하다.

    JQuery 쿠키 라이브러리 > https://hailey0.tistory.com/38

    단! 문자열로만 저장이 되기 때문에 객체를 사용하고자 하는 경우 JSON 형태로 변경하여 사용해야 한다. 그렇지 않으면  [object Object] 와 같이 저장된다.

    var user = sessionStorage.getItem('user'); // '[object Object]'
    var userJson = sessionStorage.getItem('userJson'); 
    // '{"id":"hailey0","name":"Hailey","grade":"gold", "locale": "ko"}'
    userJson = JSON.parse(userJson);
    
    //key 아이템 제거
    sessionStorage.removeItem('user');
    //전체 초기화
    sessionStorage.clear();

     

    localStorage 의 경우는 데이터가 창을 닫더라도 살아 있기 때문에, 데이터가 누적되는 경우에는 민감 데이터는 절대! 저장하면 안되고 어플리케이션에 따라 데이터 초기화 처리가 중요하다. 하지만 새 탭, 새 창을 열었을 때에도 유지되어야 할 때에는 매우 유용하다. 사용 함수는 동일하다.

     

    쿠키와 다르게 expired 옵션이 없으므로, 만약 시간을 체크하려고 하는 경우 수기로 코드를 짜야 한다.
    BUT 만료가 필요한 경우 cookie 를 사용하는 것을 추천.

    var userData = {};
    userData.created = new Date().toString();
    userData.data = JSON.stringify({id: 'hailey0', name: 'Hailey', grade: 'gold', locale: 'ko'})
    sessionStorage.setItem('userJson', JSON.stringify(userData));

     

    var userJson = sessionStorage.getItem('userJson');
    userJson = userJson? JSON.parse(userJson) : {};
    
    if(userJson.created != null){
      var created = new Date(userJson.created);
      if( (new Date().getTime() - created.getTime())/1000/60 > 10 ){ // 10분 주기
        updateUserInfo();
      }
    }

     

     

     

    반응형

    'Javascript' 카테고리의 다른 글

    Javascript 클립보드 복사  (0) 2022.12.16
    Javascript 모듈화 해서 사용하기  (0) 2021.01.08
    JQuery cookie 라이브러리 활용하기  (0) 2020.08.05
    window.console 확장  (0) 2020.04.29

    댓글

Customed By Hailey Gong.