Web Storage API

  • 웹 스토리지 API는 간단한 데이터를 사용자의 컴퓨터나 기기에 로컬로 저장하는 방법에 대한 표준을 정의한다.

 

Web Storage

  • 사이트 당 최대 5MB / IE 10MB
  • 서버로 전송하지 않음
  • 유효기간 없음
  • JavaScript 객체 저장가능

 

Cookie

  • 사이트 당 최대 4KB
  • 서버로 전송
  • 유효기간 경과하면 자동삭제
  • 객체 저장불가

 

 

Local Storage 로컬 스토리지

  • 로컬 스토리지
    • 브라우저를 통해 사용자의 컴퓨터에 데이터를 지속적으로 저장할 수 있는 공간
    • 다시 사이트를 방문했을 때 로컬스토리지에 저장된 모든 데이터를 사용 가능
    • 예) 특정 사용자의 PC에 적용되는 설정(개인화 서비스)

 

  • 로컬스토리지에 데이터 저장하고 불러오기
window.onload = function() {
	var save = document.getElementById('save');
	var load = documenet.getElementById('load');
	
	// 데이터 저장
	save.onclick = function() {
		var text = document.getElementById('text');
		
		// 로컬스토리지에 데이터 저장 (key, value)
		localStorage.setItem('name',text.value);
		
		// input 태그 초기화
		text.value='';
	};
	
	// 저장된 데이터 읽기
	load.onclick = function() {
		// 로컬스토리지에 저장된 데이터 읽기
		// var loadedName = localStorage.getItem('name');    // key
		var loadedName = localStorage.name;

		alert('저장된 값 : ' + loadedName);
	};
};
<body>
<h2>Session Storage</h2>
<input type="text" id="text"><br>
<button id="save">저장</button>
<button id="load">불러오기</button>
</body>

 

 

Session Storage 세션 스토리지

  • 세션 스토리지
    • 브라우저가 열려있는 동안 모든 데이터를 기억하고 있다가 탭(또는 창)을 닫으면 모두 지워지는 저장 공간
    • 각 창은 자체적인 개별 세션 스토리지 객체를 가지며, 데이터를 별도로 유지하게 된다.
    • 특정 사이트 접속해서 사용자 세션이 지속되는 동안만 존재한다. (임시데이터)

 

  • 세션 스토리지에 데이터 저장하고 불러오기
window.onload = function() {
	
	// 초기값 읽기
	load();
	
	var save = document.getElementById('save');
    
	// 데이터 저장
	save.onclick = function() {
		var first = document.getElementById('first');
		var name = first.value;
		
		// 세션스토리지에 데이터 저장 (key, value)
		sessionStorage.setItem('name',name);
		
		// 저장된 값 읽기
		load();
	};
	
	// 저장된 데이터 읽기
	function load() {
		var display = document.getElementById('display');
		var name = sessionStorage.getItem('name');
		
		if(name) {	// undefined면 false, 데이터가 있으면 true
			display.innerHTML = '저장된 값 : ' + name;
		}
	}
};
<body>
<h2>Session Storage</h2>
<input type="text" name="first" id="first">
<button id="save">저장</button>
<div id="display">비어있음</div>
</body>