Web

쿠키 vs 세션 vs 캐시. 무엇이 다를까?

Jun_N 2021. 7. 15. 22:05

쿠키(Cookie)

브라우저를 사용하는 환경(로컬 컴퓨터)에 서버에서 받은 데이터를 쿠키 저장소에 저장

정보의 유효기간을 지정할 수 있다. 유효기간 미지정 시 메모리에 기록되기 때문에 지정하지 않으면 웹 브라우저가 닫힐 때 삭제된다. 지정했다면 웹 브라우저를 닫아도 삭제되지 않는다. (하드디스크에 저장)

경로 값을 통해 도메인의 기준 경로(+ 하위 경로까지) 지정할 수 있고 같은 도메인을 사용하는 서버에서만 전송 가능하다. (mail.naver.com / blog.naver.com에서는 전달 가능)

쿠키의 장점

  • 다시 서버에 요청할 필요가 없기 때문에 속도가 빠르다.
  • 서버 부하가 낮다. (서버에 정보 요청 빈도 수가 줄어듬)

쿠키의 단점

  1. 중요한 사용자 정보가 저장되는 경우 보안에 취약하다.
  2. 총 300개의 쿠키를 저장할 수 있는데, 한 도메인당 20개의 쿠키만 가질 수 있다. 초과하면 오래된 쿠키부터 자동 삭제된다.
  3. 하나의 쿠키는 4kb 까지 저장 가능하다.

지워져도 되는 중요하지 않은 정보들을 브라우저에 저장

ex) 아이디 자동저장, 팝업창 안보기, 로그인 안한 상태로 장바구니 넣기


세션(Session)

웹 서버 내 웹 컨테이너에 클라이언트의 상태 또는 값을 저장해둔 것

웹 컨테이너는 하나의 웹 브라우저마다 한 세션을 생성한다. (하나의 웹 브라우저가 여러 JSP를 요청해도 웹 컨테이너는 하나의 세션만 생성한다)

브라우저가 닫히거나 서버 내에서 세션 삭제시 소멸된다. (세션이 유효기간을 갖지 않으면 나중에 웹 컨테이너에 쌓이게 되서 메모리가 부족해질 수 있다.)

웹 서버에서 클라이언트를 구분하기 위해 세션 ID를 만든다. 하지만, 같은 클라이언트가 요청했는지 스스로 구분할 수 없기에 세션과 별도로 브라우저에 세션 ID 값이 담긴 쿠키를 만들어 저장하고 이 쿠키와 비교해서 세션 값을 꺼내준다.

서비스 제공자가 직접 관리해야 하고 보안이 중요한 것은 세션으로 서버 안에 저장된다.

서버에서는 세션에 로그인 정보를 갖고 있다. 내 세션임을 증명할 쿠키는 내 브라우저에 저장.

장점

  • 보안성이 높다. 서버가 해킹당하거나 중간에 세션 ID를 탈취당하지 않다면.. ⇒ 추후 JWT

단점

  • 쿠키보다 느리다.

ex) 로그인 한 정보 유지 및 확인


캐시

웹 브라우저가 동일한 JSP에 연속으로 요청할 경우 첫 번쨰 요청의 결과를 로컬 PC의 캐시에 저장하고, 두 번째 요청시 WAS에 접근하는 것을 대신하여 로컬 PC에서 캐시를 꺼낸다.

가져오는데 비용이 드는 데이터(이미지, css, js,배너 등등)를 한번 가져오고 나서 임시로 저장해둔다.

웹 부하를 줄여주는데 도움이 된다.

단, 자주 변경되는 데이터를 캐시로 저장한다면, 캐시를 삭제하지 않았을 경우 변경되지 않은 데이터를 출력될 수도 있으니 주의.

ex) 이미지는 가져오는데 비용이 많이 들기에 한 번 받아온 데이터는 사용자의 컴퓨터 또는 중간 역할을 하는 서버에 저장한다.