본문 바로가기
웹 개발

쿠키(cookie), 세션(session), 캐시(cache)

by 동배_ 2021. 8. 23.

이 글에서는 쿠키, 세션, 캐시에 관한 정보를 알아보자.

 

먼저 이 세가지의 정보를 알기전에 앞서 알아야 할 지식이 있다. HTTP의 특징이다. 많은 사람들과 데이터를 빠르게 주고 받기 위해 지향하는 방법이 2가지가 있다. 

  • 클라이언트가 요청을 했을때 필요한 요청을 보낸 후 연결을 끊는 비연결성(Connectionless)
  • 클라이언트의 상태 정보를 가지지 않는 방식인 무상태성(Stateless)

이런 방법은 비약적으로 서버와 클라이언트간의 성능을 올려준다. 하지만 우리가 로그인을 하고 다음 페이지로 이동 할 때에 로그인 상태가 유지돼야 한다. 즉 실제로 우리가 웹을 이용할때에는 데이터 유지가 필요한 경우가 많다. 

 

이런 경우를 대비해 데이터를 유지 시킬 수 있는 쿠키, 세션이 존재한다. 둘의 차이는 별로 없지만 크게 상태 정보의 저장위치이다. 세션은 서버, 쿠키는 클라이언트에 저장 된다.

 

쿠키(cookie)

쿠키는 어떤 웹사이트에 클라이언트가 방문할 경우 서버에서 클라이언트에 일부 정보를 저장하는 작은 기록 정보 파일이다. 즉 클라이언트 상태 정보를 클라이언트의 PC에 저장했다가. 필요시 정보를 재사용가능하다.

이런 구조로 클라이언트의 로그인 정보를 서버에서 받은 후 쿠키 정보를 다시 클라이언트에 보내준다. 그러면 클라이언트는 쿠키저장소 (메모리 혹은 보조기억장치)에 저장하게 된다.

 

쿠기저장소에 정보가 저장되어 있으면 나중에 브라우저를 껏다가 키더라도 혹은 웹사이트를 변경하더라도 쿠키정보가 유지되어 있으면 다시 로그인할필요 없이 유지가 가능하다. 하지만이 쿠키도 계속 저장이 된다면 보안상 문제가 될 수 있기 때문에

 

Set-Cookie: expires=Sat, 26-Dec-2020 04:39:21 GMT

Set-Cookie: max-age=1000(1000초)

 

와 같이 쿠키의 생명주기를 서버가 전송할 때 설정해서 보낼 수 있다. 또 domain 설정을 통해 그 웹사이트에서만 쿠키가 불러와지게끔 설정 할 수 있다.

 

domain=naver.com으로 설정이 돼 있다면 naver.com와 네이버 하위 경로의 도메인들만 쿠키를 이용할 수 있다.

 

세션(Session)

세션은 쿠키와 다르게 서버에 클라이언트 상태를 유지하는 기술이다. 생명주기는 정할 수도 있고 방문자가 웹 브라우저를 접속하고 종료하는 시점까지를 말한다.

 

이 방법은 정보를 서버에 저장하고 쿠키와 다르게 사용자가 브라우저를 종료하기만 해도 세션이 삭제가 되어 쿠키보다 비교적으로 보안이 좋다. 그리고 용량 제한이 있는 쿠키와 다르게 서버에 저장하는 세션은 용량제한이 존재하지 않는다.

 

 

캐시(cache)

웹 페이지 요소를 저장하기 위한 임시 저장소이다. 이때 쿠키와 비슷하다고 생각 할 수도 있는데 쿠키는 정보를 저장하는 것이고 캐시는 그림 파일, 문서 파일 등이 저장된다. 

 

한마디로 캐시가 없다면 우리가 F5를 누를 때 마다 서버에 요청을 해 이미지, 영상 등을 계속 불러와야한다. 하지만 캐시가 있다면 캐시를 통해 이미지, 영상, 문서 정보등을 임시 저장하여 새로고침을 누르더라도 캐시에 저장된 파일, 영상, 사진 등을 제외하고 요청을 할 수 있어서 통신 할 때의 효율성이 증대된다.

 

 

'웹 개발' 카테고리의 다른 글

git 활용(rebase, squash)방법  (0) 2021.12.02
API URI 설계와 HTTP 메소드  (0) 2021.08.18
정적 웹, 동적 웹 특징  (0) 2021.08.02

댓글