곰돌이 놀이터
[기본] 세션과 쿠키의 차이( with 캐시 ) 본문
세션과 쿠키를 이해하기 위해서는 우선 HTTP 프로토콜에 대한 이해가 필요하기 때문에 앞서 HTTP 프로토콜을에 대해 정리한 글을 먼저 읽은 후 세션과 쿠키에 대한 글을 읽으면 도움이 될것이다.
쿠키( Cookie )
■ 특징
클라이언트에 저장되는 키와 값이 들어가있는 작은 데이터 파일이다.
이름, 값, 만료 날짜( 쿠키 저장기간 ), 경로 정보가 들어있다.
일정 시간동안 데이터를 저장할 수 있어서 로그인 상태를 유지할 수 있다.
클라이언트의 상태 정보를 클라이언트의 하드 디스크에 저장하였다가 필요시 참조, 재사용 한다.
■ 원리
클라이언트가 브라우저를 통해 웹페이지 접속
클라이언트가 요청한 웹페이지를 전송받으면서 쿠키( 클라이언트의 상태정보 )를 하드 디스크에 저장
클라이언트 재방문시 웹페이지 요청과 함께 쿠키값도 전송
지속적으로 로그인 정보를 가지고 있는 것 처럼 사용
■ 사용 예
사이트에 방문하여 로그인시 아이디와 비밀번호를 저장하여 재방문시 직접 입력하지 않아도 되도록 한다.
팝업창에 "오늘 이창을 보지 않음" 버튼 클릭시 하루동안 해당 팝업이 뜨지않는다.
쇼핑몰의 장바구니 기능의 경우가 쿠키를 사용한 예이다.
■ 제약조건
클라이언트에 총 300개 가지 쿠키를 저장 할 수 있다.
하나의 도메인당 20개의 값만을 가질 수 있다. ( 20개를 초과하면 가장 적게 참조한 쿠키가 지워진다. )
하나의 쿠키 값은 4MB까지 저장이 가능하다.
세션( Session )
■ 특정
세션은 클라이언트와 웹서버 간 네트워크 연결이 지속 유지되고 있는 상태를 말한다.
즉, 사용자가 브라우저를 열어 서버에 접속한 뒤 접속을 종료 할 시점 까지를 말한다.
HTTP 프로토콜은 비접속형 프로토콜이므로, 매 접속시마다 새로운 네트워크 연결이 이루어지는데, 세션이 연결 유지를 가능하게 해준다.
클라이언트가 웹서버에 Request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 ID를 부여하는데, 이 ID를 세션이라고 부른다.
세션 ID는 임시로 저장하여 페이지 이동시 이용하거나, 클라이언트가 재접속 했을때 클라이언트를 유일하게 구분하는 수단이 된다.
■ 원리
세션 ID를 서버에서 클라이언트가 자시 웹사이트에 접속시 발급해준다.
서버에서 클라이언트로 발급해준 세션 ID를 쿠키를 사용해 저장한다.( 쿠키 이름은 JSESSIONID )
클라이언트는 다시 접속시, 이 쿠키( JSESSIONID )를 이용해서 세션 ID 값을 서버에 전달합니다.
■ 장점
각 클라이언트에게 고유 ID를 부여한다.( 정확한 구분 )
서션 ID로 클라이언트를 구분해서 클라이언트의 요구에 맞는 서비스를 제공 할 수 있다.
정보들을 서버에 저장하기 때문에 보안면에서 쿠키보다 우수하다.
캐시( Cache )
Cache란 웹페이지 Resource 파일들 (오디오, 비디오, 이미지 등)의 임시 저장소로 다음에 같은 웹페이지 (또는 웹사이트) 접속 시 페이지 로딩 속도를 개선해주는 역할을 한다.
■ 쿠키와 캐시의 차이
→ 유저의 컴퓨터에 임시로 저장되어 있는 점은 같지만 사용 목적은 위에 이야기한 것 처럼 다르다.
→ Cache는 오직 웹페이지 로딩 속도 개선을 위해서만 사용되지만 Cookies는 유저 관련된 여러가지 다른 목적으로 사용 가능하다.
→ Cache는 오직 웹페이지 로딩 속도 개선을 위해서만 사용되지만 Cookies는 유저 관련된 여러가지 다른 목적으로 사용 가능하다.
→ Cache는 오디오, 비디오, 이미지 등의 Resource 파일등을 주로 저장하는 반면에 Cookies는 User preference (유저가 웹사이트 접속 시 하는 행동 패턴 또는 관련 정보) 위주의 정보를 저장한다.
→ 보통 Cache는 유저가 삭제할 때까지 유저의 컴퓨터에 저장되지만 Cookies는 서버 쪽에서 설정한 기간이 지나면 자동으로 삭제된다.
→ Cookies는 웹서버의 Access가 가능한 반면에 Cache는 Access가 불가능하다.
→ 보통 Cache는 유저가 삭제할 때까지 유저의 컴퓨터에 저장되지만 Cookies는 서버 쪽에서 설정한 기간이 지나면 자동으로 삭제된다.
→ Cookies는 웹서버의 Access가 가능한 반면에 Cache는 Access가 불가능하다.
참고
http://interconnection.tistory.com/74?category=616434
http://utk-unm.blogspot.com/2015/09/cache-vs-cookies.html
'기본 개발 지식' 카테고리의 다른 글
[기본] 플랫폼, 프레임워크, 라이브러리의, API 의 이해 (0) | 2018.07.26 |
---|---|
[기본] 매개변수( Parameter )와 전달인자( Argument )의 차이 (0) | 2018.07.25 |
[기본] 접근제어자( Access Modifier ) 란? (0) | 2018.07.20 |
[기본] GET 방식과 POST 방식의 차이 (0) | 2018.07.19 |
[기본] HTTP 란? (0) | 2018.07.18 |
Comments