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 |