[CS] 캐싱 유형

2024. 11. 24. 18:56·CS
728x90
728x90

캐싱 유형

1) 클라이언트 측 캐싱 (Client-side Caching)

  - 저장 위치 : 사용자의 기기 (브라우저, 앱, ...)

  - 이미 로드한 정적 리소스를 저장하여, 재요청 시 로딩 속도를 개선함

  - 주로 브라우저 캐시를 통해 이뤄짐

     : HTTP 헤더로 캐싱 정책 설정  ex) Cache-Control, Expires, ...

  - 네트워크 요청 없이 오프라인 액세스를 지원할 수 있음

  [장점]

    · 서버에 대한 요청량 감소 → 서버의 부하 감소 

    · 데이터가 로컬에 있어 즉시 제공 가능 → 응답 속도 빠름

  [단점]

    · 저장 용량이 제한적임

    · 최신 데이터를 가져오려면 캐시를 삭제해야 함

 

2) 서버 측 캐싱 (Server-side Caching)

  - 저장 위치 : 서버 내 메모리/디스크 또는 별도의 캐시 서버(Redis, Memcached 등)

  - 서버에서 데이터를 준비하는 과정에서 캐싱을 사용함

    : 반복된 요청에 대해 동일한 응답을 일일이 생성하지 않고, 미리 계산된 데이터를 제공함

  - 주로 동적 데이터를 캐싱함 (API 응답, 렌더링 결과 등)

  [장점]

    · DB/서버의 부하 감소

    · 복잡한 계산이나 데이터 처리 시간을 줄임

  [단점]

    · 캐싱 무효화 정책을 잘못 설정하면 최신 데이터와 다른 데이터를 제공할 수 있음

    · 캐시 저장소를 위한 추가적인 비용이 발생할 수 있음 

 

3) CDN Caching

  - 저장 위치 : 전 세계에 분산된 CDN 서버

  - 정적 리소스를 사용자와 가까운 위치에 저장하여 제공함

  - HTTP 헤더로 캐싱 정책 설정

  [장점]

    · 글로벌 성능 향상

       : 사용자가 자신과 가까운 CDN 서버로부터 콘텐츠를 받음 → 응답 속도 빠름

    · 정적 리소스 요청이 CDN에서 처리됨 → 서버 부하 감소

    · 자동 확장 지원 → 트래픽이 급증하더라도 안정적임

  [단점]

    · 비용 증가

    · 동적 데이터를 캐싱하는 데에는 적합하지 않음

  

※ CDN (Content Delivery Network)

  - 콘텐츠를 사용자에게 더 빠르고 효율적으로 제공하기 위해 전 세계에 분산된 서버 네트워크

  - 콘텐츠 캐싱

  - 트래픽 분산

     : 특정 서버로의 트래픽 집중을 방지하고, 여러 서버로 요청을 분배함

  - 콘텐츠를 원본 서버가 아닌, 사용자와 가까운 엣지 서버(Edge Server)에서 제공함

  - DDoS 방어 및 웹 애플리케이션 방화벽(WAF) 기능을 제공함

    

 


캐싱 정책을 설정하는 HTTP 헤더

# Cache-Control

  - 현대 HTTP 캐싱의 핵심 헤더

  [주요 지시자]

     i. max-age

        : 콘텐츠를 캐싱할  최대 시간 (초 단위)

Cache-Control: max-age=3600 // 3600초 (1시간) 동안 캐싱

     ii. no-cache

        : 캐싱된 데이터가 있어도 서버에서 유효성을 확인한 후 사용함

Cache-Control: no-cache

     iii. no-store
        : 데이터를 절대 캐싱하지 않음

Cache-Control: no-store

     iv. must-revalidate

        : 캐시된 콘텐츠가 만료된 경우, 클라이언트가 반드시 서버에 유효성 검사를 요청하도록 강제함

Cache-Control: public, max-age=3600, must-revalidate

     v. public

        : 모든 클라이언트와 프록시에서 캐싱 허용

Cache-Control: public, max-age=86400

     vi. private

        : 특정 사용자만 캐싱 가능

Cache-Control: private, max-age=3600

# Expires

  - 특정 시점 이후 캐싱된 콘텐츠가 만료되었음을 알림

  - HTTP/1.0에서 사용되었으며, 현재는 Cache-Control의 max-age로 대체됨

// 2024년 11월 21일 12시 이후에는 콘텐츠를 새로 가져와야 함
Expires: Wed, 21 Nov 2024 12:00:00 GMT

# Vary

  - 서버 응답이 요청 헤더의 값에 따라 다를 수 있음을 알림

// 클라이언트의 언어에 따라 다른 데이터를 캐싱함
Vary: Accept-Language

# Pragma

  - HTTP/1.0에서 사용되었으며, 현재는 Cache-Control로 대체됨 

Pragma: no-cache
320x100
반응형
저작자표시 비영리 변경금지 (새창열림)

'CS' 카테고리의 다른 글

[CS] 해시 알고리즘 (Hash Algorithm)  (0) 2024.11.26
[CS] 웹 보안(Web Security)과 주요 취약점  (0) 2024.11.25
[CS] 백엔드 개발자 로드맵 따라가기 (진행중)  (0) 2024.11.23
[CS] 캐싱 전략  (0) 2024.11.21
[CS] 인증 (Authentication)  (0) 2024.11.20
'CS' 카테고리의 다른 글
  • [CS] 해시 알고리즘 (Hash Algorithm)
  • [CS] 웹 보안(Web Security)과 주요 취약점
  • [CS] 백엔드 개발자 로드맵 따라가기 (진행중)
  • [CS] 캐싱 전략
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (383)
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (9)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • etc. (13)
      • Error Note (15)
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    Hotkeys
    tailwindcss
    jQuery
    cs
    Android
    Codeigniter
    jsp
    CSS
    typeScript
    zapier
    SQL
    vuejs
    티스토리챌린지
    Wordpress
    SEO
    오블완
    C#
    http
    SpringBoot
    git
    HTML
    Swing
    php
    면접
    js
    errorNote
    java
    개발일지
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[CS] 캐싱 유형
상단으로

티스토리툴바