본문 바로가기

카테고리 없음

쿠키(Cookie)와 세션(Session)과 로컬 스토리지(Local Storage)

구분 쿠키(Cookie) 세션(Session) 로컬 스토리지(Local)
저장 공간 Client(browser) Server Client(browser)
데이터 타입 Text Object Object
만료 시점 서버에서 정할 수 있음 브라우저 종료 영구(삭제가능)
리소스 Local Server Local
용량제한 300개 저장가능, 도메인당 20개, 4Kb Server의 리소스 5MB
발급처 Client, Server Client Client
보안 세션보다 안좋음 쿠키보다 좋음 쿠키와 동일
요청 속도 빠름 느림 쿠키와 동일

쿠키와 세션을 사용하는 이유

HTTP 프로토콜의 특징이자 약점을 보완하기 위해서 사용된다.

  • Connectionless 프로토콜 (비연결지향)
    • 클라이언트가 서버에 요청(Request)을 했을 때,
      그 요청에 맞는 응답(Response)을 보낸 후 연결을 끊는 처리방식이다.
  • Stateless 프로토콜 (상태정보 유지 안함)
    • 클라이언트와 첫번째 통신에서 데이터를 주고 받았다 해도,
      두번째 통신에서 이전 데이터를 유지하지 않는다.
    • 클라이언트의 상태 정보를 가지지 않는 서버 처리 방식이다.

 

서버와 클라이언트가 통신을 할 때 통신이 연속적으로 이어지지 않고 한 번 통신이 되면 끊어진다.

따라서 서버는 클라이언트가 누구인지 계속 인증을 해줘야 한다. 하지만 그것은 매우 귀찮고 번거로운 일이다. 

또한 웹페이지의 로딩을 느리게 만드는 요인이 되기도 한다. 그런 번거로움을 해결하는 방법이 바로 쿠키와 세션이다.

 

세션을 사용하면 좋은데 왜 쿠키를 사용할까?

세션은 서버의 자원을 사용하기때문에 무분별하게 만들다보면 서버의 메모리가 감당할 수 없어질 수가 있고 속도가 느려질 수 있기 때문이다.

쿠키/세션은 캐시와 엄연히 다르다!

  • 캐시는 이미지나 css, js파일 등을 브라우저나 서버 앞 단에 저장해놓고 사용하는 것이다.
  • 한번 캐시에 저장되면 브라우저를 참고하기 때문에 서버에서 변경이 되어도 사용자는 변경되지 않게 보일 수 있는데 이런 부분을 캐시를 지워주거나 서버에서 클라이언트로 응답을 보낼 때 header에 캐시 만료시간을 명시하는 방법등을 이용할 수 있다.

보통 쿠키와 세션의 차이를 물어볼 때 저장위치와 보안에 대해서는 잘 말하는데 사실 중요한 것은 라이프사이클을 얘기하는 것이다.