일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JoinColumn
- git
- REST API 규칙
- jwt메서드
- JPA
- 스프링 부트 공식 문서
- Filter
- 최종 프로젝트
- 빈생성안됨
- Q 클래스
- json gson 차이
- jpa에러
- Error creating bean with name
- jpa회원가입
- JPA주의사항
- uncheck Exception
- github
- 스프링 부트 기능
- 인텔리제이
- Spring Spring boot 차이
- @IdClass
- 복합키
- json
- ERD 작성
- 스프링부트오류
- Unsatisfied dependency
- REST란
- queryDSL
- 1차캐시
- spring서버
- Today
- Total
Everyday Dev System
Local Storage 와 Session Storage 본문
Cookie와 Session 공부를 하다가 프론트엔드 개발자는 Local Storage 와 Session Storage에 대해서 필수로 학습한다는 사실 알게되었다.
나중에 프론트 개발자와 협업을 하게 될 경우 해당 storage에 대해서 간략하게 나마 알고 있다면
소통하는데에 더욱 용이하지 않을까 싶어서 구글링을 해보았다.
먼저, 쿠키에 대한 기본적인 개념을 짚고 넘어가자.
쿠키란?
먼저 기본적으로 Cookie는 클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일,
크롬 기준으로 '개발자도구' 탭을 열어 Application - Storage - Cookies 에서 확인이 가능하다.
또한 그 위에 Local Storage 와 Session Storage가 있다.
이제 이 두개의 저장소에 대해 살펴보자
Local Storage 와 Session Storage 는 Web Storage Object 이다.
이 둘은 브라우저 내에 key-value 쌍을 저장 할 수 있도록 한다.
두 Storage Object는 동일한 메서드와 프로퍼티를 제공한다.
Map과 유사하지만, index를 사용해 key에 접근할 수 있다는 점에서 차이가 있다.
Session Storage 객체는 local Storage에 비해 자주 사용되지는 않는다.
그 이유는 상대적으로 훨씬 제한적이기 때문이다.
"쿠키를 사용하면 브라우저에 데이터를 저장할 수 있는데, 왜 또 다른 객체를 사용하여 데이터를 저장할까?"
그 이유는 쿠키와 다르게 Web Storage Object는 네트워크 요청 시 서버로 전송되지 않기 때문에 쿠키보다 더 많은 자료의 보관이 가능하기 때문이다. 대부분의 브라우저는 2MB 혹은 그 이상의 객체를 저장할 수 있도록 한다.
쿠키와 다른 점으로, 서버가 HTTP header를 통해 Web Storage Object를 조작할 수 없다는 점이다.
이러한 Web Storage Object들은 자바스트립트 내에서 수행된다.
Web Storage Object는 도메인과 프로토콜 그리고 포트로 정의되는 Origin에 묶여있어, 해당 정보가 다르면
해당 Web Storage Object 데이터에 접근할 수 없다.
→ Origin (Domain/Port/Protocol)
두 Storage Object는 동일한 메서드와 프로퍼티를 제공한다.
- setItem(key, value)
- getItem(key)
- removeItem(key)
- clear()
- key(index)
- length
Map과 유사하지만, index를 사용해 key에 접근할 수 있다는 점에서 차이가 있다.
Local Storage의 주요기능
- origin 같은 경우 데이터는 모든 탭과 창에서 공유된다.
- 브라우저나 OS가 재시작되어도 데이터를 파기하지 않는다.
localStorage.setItem('test', 100);
위 코드를 실행하고, 브라우저를 닫고 다른 창에서 아래 코드를 실행해도 결과가 1이 나온다.
alert( localStorage.getItem('test') ); // 100
그 이유는,
Origin (Domain/Port/Protocol) 만 같다면 url 경로는 달라도 동일한 결과를 볼 수 있기 때문이다.
즉, Local Storage는 동일한 origin을 가진 모든 창에서 공유된다는 특징이 있다.
Session Storage
Session Storage 객체는 local Storage에 비해 자주 사용되지는 않는다.
그 이유는 상대적으로 훨씬 제한적이기 때문이다.
Session Storage는 현재 떠 있는 탭 내에서만 유지가 됩니다.
- 같은 페이지라도 다른 탭에 있으면 다른 곳에 저장된다.
- 페이지를 새로 고침할 때 데이터는 사라지지 않습니다.
- 그러나 탭을 닫고, 새로 열 때는 데이터가 휘발됩니다.
요약
Local Storage | Session Storage |
Origin이 같은 탭, 창 전체에서 공유 | Origin이 같은 브라우저 탭, iframe에서 공유 |
브라우저를 껐다가 켜도 유지 | 페이지를 새로고침해도 유지, 탭이나 브라우저 열고 닫을 경우 휘발 |
'나의 호기심' 카테고리의 다른 글
SimpleJpaRepostory 내부 뜯어보기 (0) | 2023.07.26 |
---|---|
JPA의 엔티티는 왜 기본 생성자가 있어야 할까? (0) | 2023.07.18 |
HttpHeaders는 MultiValueMap의 구현체이다? (0) | 2023.07.11 |
스프링 부트에서 MockMvc를 사용하여 HTTP API 테스트하기 (0) | 2023.07.10 |
왜 HTTP 통신에서 Body에 Json을 주로 활용하는가? (0) | 2023.06.21 |