Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

은학의 코딩 일기장

[컴퓨터 네트워크] 웹캐시 본문

cs

[컴퓨터 네트워크] 웹캐시

<Eunhak> 2024. 8. 28. 17:04

웹 페이지나 웹 애플리케이션에서 자주 요청되는 자원(이미지, HTML 문서, CSS 파일, JavaScript 파일 등)을 임시로 저장하여, 이후 동일한 자원에 대한 요청이 있을 때 원본 서버로부터 다시 다운로드하지 않고 저장된 복사본을 제공하는 기술입니다. 웹 캐시는 웹 성능을 최적화하고, 서버 부하를 줄이며, 네트워크 트래픽을 절감하는 데 중요한 역할을 합니다.

웹 캐시의 주요 개념

  1. 캐싱 위치:
    • 브라우저 캐시(Browser Cache): 사용자의 웹 브라우저에 저장되는 캐시입니다. 브라우저는 자주 방문하는 웹 페이지의 자원을 로컬에 저장하여, 동일한 페이지를 다시 방문할 때 로딩 속도를 높입니다.
    • 프록시 캐시(Proxy Cache): 네트워크 경로 중간에 위치한 캐시 서버에서 자원을 저장하고 제공하는 방식입니다. 회사나 ISP에서 많이 사용하며, 여러 사용자가 동일한 자원에 접근할 때 원본 서버 대신 프록시 서버에서 데이터를 제공하여 성능을 개선합니다.
    • 서버 캐시(Server Cache): 원본 서버에서 자체적으로 캐시를 운영하는 방식입니다. 데이터베이스 쿼리 결과나 렌더링된 페이지를 캐시하여, 동일한 요청에 대해 빠르게 응답할 수 있도록 합니다.
  2. 캐시 제어(Cache Control):
    • Cache-Control 헤더: HTTP 헤더의 일종으로, 캐시 정책을 정의합니다. 예를 들어, Cache-Control: max-age=3600은 자원을 1시간 동안 캐싱하도록 지시합니다.
    • Expires 헤더: 자원의 유효 기간을 설정합니다. 이 시간이 지나면 캐시된 자원은 만료되며, 새로 요청해야 합니다.
    • ETag(Entity Tag): 자원의 고유 식별자로, 서버가 자원의 변경 여부를 확인하는 데 사용됩니다. 캐시된 자원과 원본 자원의 ETag가 동일하면 캐시된 자원을 사용할 수 있습니다.
    • Last-Modified 헤더: 자원이 마지막으로 수정된 시간을 나타냅니다. 클라이언트는 이 정보를 사용해 서버에 자원의 변경 여부를 확인하고, 변경되지 않은 경우 캐시된 자원을 사용할 수 있습니다.
  3. 캐시 전략:
    • Freshness (신선도): 캐시된 자원이 여전히 유효한지 판단하는 기준입니다. Cache-Control, Expires 등을 사용해 설정합니다.
    • Revalidation (재검증): 캐시된 자원의 신선도가 만료되었을 때, 원본 서버에 자원이 변경되었는지 확인하는 과정입니다. ETag와 Last-Modified가 재검증에 사용됩니다.
    • Invalidation (무효화): 자원이 변경되거나 만료되어 캐시가 더 이상 유효하지 않게 되는 상태입니다. 무효화된 캐시 자원은 원본 서버에서 새로 요청해야 합니다.
  4. 장점:
    • 성능 향상: 캐시된 자원을 사용하면 로딩 속도가 빨라지고, 사용자 경험이 개선됩니다.
    • 서버 부하 감소: 캐시 서버나 브라우저에서 자원을 제공함으로써, 원본 서버의 요청 수를 줄일 수 있습니다.
    • 네트워크 트래픽 절감: 자주 사용되는 자원이 캐시되므로, 동일한 자원에 대한 반복적인 다운로드를 줄일 수 있습니다.
  5. 단점:
    • 정확성 문제: 캐시된 자원이 오래되었거나 변경된 경우, 최신 정보를 반영하지 못할 수 있습니다. 이를 해결하기 위해 적절한 캐시 무효화 전략이 필요합니다.
    • 캐시 복잡성: 다양한 캐시 정책과 전략을 구현하고 관리하는 데 복잡성이 수반될 수 있습니다.