공간정보아카데미

Session, Cookie, Cache

minjava 2025. 8. 26. 18:12

1. 쿠키가 뭐임 - 브라우저에 저장되는 작은 데이터

 

- 정의

서버가 브라우저에 심어두는 작은 데이터 (key-value쌍)

인증(로그인 유지)뿐만 아니라 언어설정 같은 사용자 환경설정도 저장

클라이언트 개인장치(브라우저)에 저장됨

 

- 예시

팝업창 안뜨게 / 아이디, 비번 저장 / 장바구니

 

- 왜씀?

웹사이트의 기본 기능 활성화 (탐색, 로그인 유지, 보안 영역 접근 등)

사용자 맞춤 환경 제공 (언어, 지역 등 설정 유지)

방문자 행동 분석 (익명 수집, 보고를 통해 웹사이트 운영자가 방문자와 웹사이트 사이의 상호작용 이해 도움ㄱㄱ)

 

- 특징

자동 전송 (사용자가 따로 처리 안해도 HTTP가 요청시 Header에 실림.)

도메인, 경로 제한 (A사이트 쿠키는 A에만 전송)

유효기간 존재 (Session Cookie, Persistent Cookie)

 

- 구성요소

이름 kdy : 각각의 쿠키를 구별할 때 사용

값 value : 쿠키 이름과 관련된 값 ------------> Expires, MaxAge (쿠키 수명) / Domain, Path (전송 조건) / HttpOnly (JS 접근 차단) / Secure, SameSite (보안 속성) 

 

- 동작방식

1. 사용자가 사이트 방문 -> 브라우저가 서버에 요청

2. 서버 응답시 Set-Cookie 헤더 전달 (페이지 데이터 + 필요시 쿠키)

3. 브라우저가 쿠키 저장

4. 같은 사이트 재방문시, 요청마다 자동으로 쿠키 동봉 (서버는 쿠키를 보고 사용자를 식별)

 

- Lifecycle

Session Cookie : 브라우저 종료시 삭제

Persistent Cookie : 만료일 전까지 유지

 

2. 세션이 뭐임 - 쿠키 속 세션 id로 서버가 사용자 상태 관리

- 정의

쿠키를 통해 전달되는 id를 매개로, 사용자 정보를 서버에서 관리하는 방식

클라이언트는 세션 id만 들고 다니고, 실제 데이터는 서버(db, 메모리)에 저장

 

- 예시

로그인 유지 (사용자 정보 서버에 저장 후 식별) / 쇼핑몰 주문 진행 상태 / OTT 동시접속 제한

 

- 왜씀?

사용자를 안전하게 식별, 제어하기 위해 / 민감정보를 클라이언트에 저장하지 않고 서버에서 관리 가능

 

- 특징

클라이언트는 세션 id만 쿠키에 담아 다님

브라우저 종료시 보통 세션 만료

서버 메모리/db에 클라이언트 수만큼 저장 -> 서버 부하의 문제ㅜ

 

- 구성요소

세션 id (랜덤 문자열)

세션 데이터 (서버 메모리, db에 저장되는 사용자 상태)

 

- 동작방식

1. 로그인 성공 -> 서버가 세션 생성, 세션 id 발급

2. 세션 id를 쿠키에 담아 브라우저에 전달

3. 클라이언트가 재요청시 세션 id 동봉

4. 서버가 세션 db에서 조회해 사용자 식별

 

- Lifecycle

브라우저 종료시 삭제되거나

서버에서 설정한 idle timeout (예: 30분 미사용시 만료)

관리자가 강제 만료 가능

 

3. 캐시가 뭐임 - 자주 쓰는 데이터/응답을 저장해 성능높ㅍ

- 정의

자주 사용하는 데이터를 임시 저장 해두고, 다시 요청할 때 빠르게 불러옴

네트워크 요청, 연산 결과를 저장하여 성능 향상

 

- 예시

웹 브라우저 캐시 : 이미지, css, js 파일 재사용

DNS 캐시 : 도메인 -> IP 매핑 결과 저장

CPU 캐시 : 자주 쓰는 명령어, 데이터 저장

 

- 왜씀?

속도 향상 (반복 요청시 서버까지 안가고 캐시에서 꺼내라)

서버 부하 감소

네트워크 비용 절약

 

- 특징

 만료시간 존재함 (Expire, Cache-Control)

클라이언트 캐시(브라우저), 서버 캐시(CDN, Proxy), 애플리케이션 캐시 등 다양한 계층

최신성 보장 어려워 -> 무효화 전략 필요

 

- 구성요소

Key (URL, 쿼리 등 요청 식별자)

Value (응답 데이터)

만료 정책 (Expire, ETag, Last-Modified 등)

 

- 동작방식 (웹 브라우저 예시)

1. 클라이언트가 리소스 요청

2. 브라우저/프록시 캐시 확인

-> 유효하면 서버 안가고 바로 응답

-> 만료시 서버에 If-None-Match / If-Modified-Since 헤더로 재검증

3. 서버 응답이 304 Not Modified면 캐시 재사용, 새 데이터 있으면 갱신

 

- Lifecycle

Cache-Control: max-age=3600 같은 지시어로 지정

만료되면 새로 요청 -> 캐시 갱신

'공간정보아카데미' 카테고리의 다른 글

변수 vs 객체 / stack vs heap  (0) 2025.09.01
Spring - DI - Container  (0) 2025.09.01
java - MyBatis  (0) 2025.08.29
Vue - Pinia  (0) 2025.08.25
ubiaccess-framework  (0) 2025.08.22