728x90
반응형
1. 쿠키(Cookie)
정의:
- 클라이언트(브라우저)에 작은 데이터 조각을 저장하는 방식.
특징:
- 클라이언트 측에 저장됩니다.
- 주로 사용자 인증, 세션 유지, 사용자 맞춤 설정에 사용됩니다.
- 서버와의 통신 시, HTTP 요청에 자동으로 포함되어 전송됩니다.
속성:
- 크기 제한: 약 4KB.
- 유효기간 설정 가능:
- 만료 기간이 설정된 쿠키는 일정 시간 동안 유지됩니다.
- 세션 쿠키는 브라우저 종료 시 삭제됩니다.
장점:
- 서버 부하 감소(클라이언트에 저장되므로).
- 간단한 데이터 저장 가능.
단점:
- 보안 취약: 데이터가 평문으로 저장될 수 있어 민감한 정보는 저장하지 않음.
- 브라우저 제한: 크기와 개수 제한.
예시:
- 로그인 유지: 쇼핑몰에서 로그인 후, 페이지를 닫았다가 다시 열어도 로그인 상태가 유지되는 것.
- 사용자 설정 저장: 웹사이트에서 다크 모드를 선택했을 때, 다음 방문 시에도 다크 모드가 유지됨.
동작방식
1) 클라이언트가 페이지 요청
2) 서버에서 쿠키를 생성
3) HTTP 헤더에 쿠키를 포함시켜 응답
4) 브라우저가 종료되어도 쿠키 만료기간이 있다면 클라이언트에서 보관하고 있음
5) 같은 요청을 할 경우 HTTP헤더에 쿠키를 함께 보냄
6)서버에서 쿠키를 읽어 이전 상태 정보를 변경 할 필요가 있을 때 쿠키를 업데이트하여 변경된 쿠키를 HTTP헤더에 포함시켜 응답
2. 세션(Session)
정의:
- 서버에서 사용자 상태 정보를 관리하는 방식.
특징:
- 쿠키와 달리 서버 측에 저장됩니다.
- 클라이언트는 세션 ID를 쿠키를 통해 저장하고 서버에 전달.
- 로그인과 같은 사용자 인증 정보를 유지하는 데 사용됩니다.
동작 방식:
- 사용자가 로그인하면, 서버는 세션을 생성하고, 고유한 세션 ID를 발급.
- 이 세션 ID는 클라이언트의 쿠키에 저장되어 요청마다 서버에 전송.
- 서버는 해당 세션 ID를 통해 사용자의 상태를 확인
장점:
- 보안성: 민감한 데이터는 클라이언트가 아닌 서버에 저장되므로 안전함.
- 데이터 용량 제한 없음.
단점:
- 서버 자원 소모: 서버 메모리에 사용자별로 세션을 저장해야 함. 즉 사용자가 많아질 수록 서버 메모리 많이 차지
- 브라우저 종료 시 기본적으로 세션이 만료
예시:
- 온라인 뱅킹: 은행 사이트에 로그인한 후, 일정 시간(예: 10분) 동안 아무런 활동이 없으면 자동 로그아웃.
- 장바구니: 쇼핑몰에서 물건을 장바구니에 담았는데, 브라우저를 닫으면 장바구니가 초기화됨.
3. 캐시(Cache)
정의:
- 클라이언트(브라우저) 또는 서버에 정적 자원(HTML, CSS, JS, 이미지 등)을 임시로 저장하여 재사용하는 방식.
특징:
- 자주 사용하는 데이터를 저장해 페이지 로딩 속도를 향상.
- 브라우저나 CDN(Content Delivery Network)에서 사용.
동작 방식:
- 한 번 다운로드된 정적 파일을 브라우저가 저장하고, 동일한 요청이 있을 경우 서버에 재요청하지 않고 저장된 데이터를 사용.
장점:
- 성능 향상: 네트워크 트래픽 감소, 빠른 로딩 속도 제공.
- 서버 부하 감소.
단점:
- 오래된 데이터 문제: 데이터가 업데이트되었음에도 캐시된 오래된 데이터를 불러올 수 있음.
- 유효성 관리 필요: 만료 헤더 설정이나 캐시 무효화 전략이 필요.
예시:
- 이미지 로딩: 자주 방문하는 웹사이트의 로고나 배너 이미지가 빠르게 로딩됨.
- 유튜브: 같은 동영상을 다시 재생할 때 처음보다 빠르게 재생됨.
비교 요약:
항목 | 쿠키(Cookie) | 세션(Session) | 캐시(Cache) |
저장 위치 | 클라이언트(브라우저) | 서버 | 클라이언트(브라우저) 또는 서버 |
목적 | 사용자 상태 유지 (로그인, 설정 등) | 사용자 세션 상태 관리 | 정적 자원 재사용 (속도 향상) |
유효기간 | 설정 가능 (만료 시간 지정) | 기본적으로 브라우저 종료 시 만료 | 만료 기간 설정 가능 |
보안성 | 비교적 낮음 (데이터가 클라이언트에 저장됨) | 높음 (데이터가 서버에 저장됨) | 보안 관련 없음 |
데이터 크기 | 약 4KB 제한 | 제한 없음 | 제한 없음 |
728x90
반응형