Cookie vs Storage (정리)

오해성·2021년 2월 3일
0

기술 상점

목록 보기
9/10
post-thumbnail

해당 포스트에서는 cookie, storage의 종류와 차이점, 장단점을 알아 보겠습니다.

우선, 크게 두분류로 나눠보겠습니다.

이둘의 궁긍적인 목표는 같습니다. 기본적으로 사이트를 방문한 사용자의 정보를 저장하기 위한 저장소로써의 역할을 하는 녀석들입니다.

우선, 본격적으로 이 둘의 차이점을 알기전에 각각에 종류는 무엇이 있는지 부터 확인하고 기능은 어떻게 다른지 한번 알아보겠습니다.

  • persistent cookies
    만료일을 지정하여 사용하는 쿠키입니다.
  • session cookies
    만료일이 존재하지 않지만 브라우저 혹은 탭이 열려있는 경우에만 데이터를 저장합니다.

만약 쿠키를 영구적으로 사용한다면 persistent cookies의 만료일을 매우 길게 설정해주면 가능하겠죠?

Storage 종류

  • localStorage
    만료일이 존재하지 않으며 사용자가 임의적으로 삭제하지 않는 다면 해당 브라우저에 영구적으로 보존됩니다. 브라우저의 출처만 같다면 새로운 탭으로 접근하거나 껐다 켜도 데이터가 남아 있습니다.
  • sessionStorage
    session cookies와 마찬가지로 저장한 브라우저가 열렸을 경우에만 저장되며, 만약 브라우저의 탭을 닫을 경우 해당 데이터는 소멸합니다. 새로운 탭으로 접근해도 기존의 데이터를 못가져옵니다.

그럼 간략히 cookie, storage의 종류와 각 종류의 특징들을 알아보았으니, cookie와 storage의 차이가 무엇인지 알아봐야겠습니다.

Cookie의 특징

1) 웹 사이트에 cookie를 설정할 경우 이후 모든 웹 요청은 cookie를 포함하여 요청하게 됩니다.

2) cookie는 단순한 문자열만을 객체정보로써 저장할 수 있습니다.

3) cookie의 용량은 한 사이트당 20개에 최대 쿠키 용량 또한 한 사이트당 4KB로 제한되어 있습니다. (쿠키의 하위키를 이용하여 제한을 어느정도 해소할 수 있지만 이러한 경우는 거의 없음)

4) cookie는 만료일이 있기에 영구적인 데이터 저장이 불가능 하다.
(단, 만료일을 무자비하게 길게 한다면 영구적으로 만들 수는 있다.)

5) 브라우저 호환성은 거의 모든 브라우저에서 지원합니다.

Storage의 특징

1) storage는 저장된 데이터가 클라이언트에 저장될뿐 서버에 전송되지는 않습니다.

2) storage는 저장되는 데이터 형태에 대한 제한이 없습니다.

3) storage는 데이터 용량이 cookie에 비해 높습니다. (갯수 제한은 존재하지 않음)
(localStorage의 경우 보통 5MB이며 sessionStorage의 경우 4MB를 할당 받습니다.)

4) storage의 경우 영구적인 데이터 보존이 가능합니다. (localStorage)

5) storage는 HTML5 API를 지원하고는 있지만 완벽하지 않기에 브라우저 호환성이 cookie에 비해 떨어집니다.

음, 이렇게만 두고 보면 cookie를 왜 쓰는지 이해가 안갑니다. 물론 storage가 기존의 쿠키의 단점을 보완하기 위해 나온 기술이라고는 하지만 그렇다기에는 cookie또한 아직 많이 쓰이기에 왜 그런지 알아보니, cookie의 경우 주로 서버에 요청하는 대상이 누구인지 알려주는 용도로 많이 사용됩니다. 이에 비해 storage는 local에서만 작동하기에 서버와는 관계가 없죠, 서버가 요청하는 대상을 구분하기 위해서는 cookie가 필요한 것이죠.

정리

cookie와 storage 중 무엇이 더 좋은지에 대해서는 의견이 분분한 것 같습니다. 구글링을 열심히 해보니 무엇이 더 좋다기 보다는 그냥 상황에 따라 필요한 녀석들을 가져와서 사용하는 것 같았습니다.

저는 그냥 기존에 계속 사용하던 storage를 사용할 것 같지만, 사이트 방문자 수와 같은 기능은 cookie를 사용하여 구현하는 것이 편하므로 cookie를 사용할 예정입니다. 이 처럼 상황에 맞게 적절히 사용하는 것이라 생각합니다.

1개의 댓글

comment-user-thumbnail
2022년 10월 19일

궁금한 점이 있어서 질문 남깁니다.
session cookie를 브라우저 혹은, 탭이 열려있는 경우만 저장한다고 하셨는데 브라우저 저장, 탭 저장은 각각 어떻게 설정하나요?

답글 달기