오늘 면접 관련 특강을 듣다가 CS 관련 면접 질문 목록을 보게 되었다. 질문 목록에서 있던 질문 중 가장 궁금했던 쿠키, 세션 그리고 캐시의 차이점에 대해서 먼저 알아보고자 한다! 🤓
쿠키는 클라이언트(로컬)에 저장되는 작은 텍스트 파일이고, 키와 값이 들어있음. 직접 삭제하지 않는 한 영구적으로 로컬에 저장됨.
| 항목 | 내용 |
|---|---|
| 저장 위치 | 사용자 브라우저(클라이언트) |
| 구성요소 | 이름, 값, 유효시간, 도메인, 경로 |
| 작동방식 | 1. 서버 응답 시 HTTP 헤더에 set-cookie 옵션을 통해 쿠키를 포함한 응답을 보냄 2. 클라이언트가 요청 시 쿠키 정보와 함께 전송 |
| 장점 | 서버 자원 소모 없음, 지속적인 정보 유지 가능 |
| 단점 | 해당 데이터는 일반 텍스트이므로 설계상 보안이 보장되지 않음, 용량 제한이 있음 |
일정 기간 동안 같은 사용자의 요청을 하나의 상태로 유지하는 기술. 웹 브라우저가 서버에 접속해 브라우저를 종료할 때까지 세션을 유지함.
| 항목 | 내용 |
|---|---|
| 저장위치 | 서버에 저장, 클라이언트는 세션 ID만 쿠키로 보유 |
| 작동방식 | 1. 서버가 세션 생성 후 고유 ID 발급 2. ID를 쿠키에 담아 클라이언트에 전송 3. 클라이언트는 요청 시 세션 ID 쿠키 함께 전송 4. 서버는 세션 ID로 사용자 식별 |
| 장점 | 데이터를 서버에 저장해 보안이 우수함 |
| 단점 | 다수 사용자 접속 시 서버 부하 발생 가능 |
자주 사용하는 데이터나 값을 임시 저장하는 저장소
| 항목 | 내용 |
|---|---|
| 저장위치 | 클라이언트(브라우저 캐시) 또는 서버 측 모두 가능 |
| 작동방식 | 1. 최초 접근 시 데이터 저장 2. 이후 같은 요청 발생 시 저장된 데이터 활용 3. 설정된 유효기간에 따라 갱신 |
| 장점 | 캐시에 데이터를 복사해 놓으면, 계산이나 접근 시간 없이 더 빠른 속도로 데이터를 접근 가능 |
| 단점 | 원본 데이터가 변경되었는데 캐시된 데이터가 갱신되지 않으면 오래된 정보 표시, 저장 공간이 제한적임 |
| 구분 | 쿠키 | 세션 | 캐시 |
|---|---|---|---|
| 저장위치 | 클라이언트 | 서버 | 클라이언트 또는 서버 |
| 목적 | 사용자 식별 및 상태유지 | 사용자 식별 및 상태유지 | 성능 향상 |
| 보안성 | 낮음 | 높음 | - |
| 라이프사이클 | 만료시간까지 유지 | 브라우저 종료 시 삭제 | 설정된 만료기간까지 |
| 저장내용 | 텍스트 데이터, 사용자 정보 | 텍스트 데이터, 사용자 정보 | 정적 리소스(이미지, CSS, JS 파일) |
요약
쿠키 => 사용자의 정보를 클라이언트에 저장
세션 => 사용자의 정보를 서버에 저장
캐시 => 요청한 데이터를 클라이언트 또는 서버에 임시 저장
[출처]
https://code-lab1.tistory.com/298
https://www.xenonstack.com/insights/local-vs-session-storage-cookie