캐싱(Caching)

🧠 캐싱(Caching)이란?

자주 사용하는 데이터를 임시로 저장해 두고,
다음 요청 시 서버나 DB에 다시 접근하지 않고
빠르게 응답할 수 있도록 하는 기술입니다.

 

속도 향상서버 부하 감소를 시켜야될 때 아주 유용한 기술이 캐싱입니다.

 

 

 

🔄 캐시 처리의 핵심 목적

목적 설명
⚡ 응답 속도 향상 매번 새로 계산하거나 DB에서 불러오지 않음
💻 서버 부하 감소 동적 처리 로직을 반복하지 않아 리소스 절약
🌐 대역폭 절약 클라이언트 또는 중간 서버에 데이터가 있으면 다시 보내지 않음

 

 

📍 캐싱이 발생할 수 있는 위치

위치  설명
1️⃣ 브라우저 캐시 (Client-side) HTML, CSS, JS, 이미지 등을 브라우저에 저장
2️⃣ CDN (Content Delivery Network) 전 세계 엣지 서버에 정적 리소스를 저장해 빠르게 제공
3️⃣ 웹 서버 캐시 웹 서버 자체에 페이지, 응답 데이터 등을 저장
4️⃣ 애플리케이션 서버 캐시 메모리(DB 대신) 또는 파일로 처리 결과 저장 (예: Redis)
5️⃣ DB 캐시 자주 사용하는 쿼리 결과를 메모리에 저장 (예: Query Cache)

 

 

📦 캐싱 방식의 종류

🔹 1. 정적 캐싱 (Static Caching)

  • HTML, 이미지, CSS, JS 파일을 캐시
  • 주로 웹 서버나 CDN, 브라우저가 수행
  • ✅ 캐싱 예시:→ 1일 동안 캐시 유지
     
    # arduino
    Cache-Control: max-age=86400    # 1일 동안 캐시 유지

🔹 2. 동적 캐싱 (Dynamic Caching)

  • 사용자 요청에 따라 생성된 동적 페이지나 데이터를 일정 시간 저장
  • 예: 뉴스 메인 페이지, 인기 게시글 목록

🔹 3. 메모리 캐싱 (In-memory Caching)

  • 서버의 RAM에 데이터를 올려 빠르게 접근
  • 대표적인 도구: Redis, Memcached

🔹 4. 프록시 캐싱

  • **중간 서버(Reverse Proxy)**가 요청을 받아, 캐시가 있다면 직접 응답 (예: Nginx, Varnish)
  • 실제 웹 서버를 거치지 않으므로 속도 향상

 

 

📑 캐시 정책 (Cache Policy)

정책 설명
No-cache 항상 서버에 확인 후 저장 가능
No-store 저장 절대 금지 (보안 정보 등)
max-age=초 지정한 시간 동안 캐시 유효
ETag/Last-Modified 변경 여부를 비교해 새로 받을지 결정

 

 

🔄 동작 예시

  1. 사용자가 웹 페이지 요청
  2. 웹 서버는 캐시를 먼저 확인
  3. 캐시 있음 → 바로 응답
  4. 캐시 없음 → 서버가 처리 → 응답 저장 후 반환

 

💡 요약

캐싱 장점 캐싱 단점
빠른 속도 오래된 데이터 응답 가능성
서버 부하 감소 캐시 무효화 관리 필요
대역폭 절약 실시간성 필요한 시스템에는 부적합