네트워크 HTTP Cache 란? 정의와 최적의 캐시 사용 방법

캐시란?

데이터 또는 정보를 임시로 저장하고 빠르게 접근할 수 있도록 하는 저장 공간을 가리킵니다.

이에, 캐시는 데이터 접근 시간을 줄이고 시스템 성능을 향상 시키는데 사용됩니다.

특히나 캐시는 다양한 컴퓨팅 분야에서 활용이 되는데 주로 네트워크, 웹 브라우징, 데이터베이스 시스템, 하드웨어, 소프트웨어, 그래픽 처리 등에 발견 됩니다.

캐시 특징

  • 캐시는 빈번하게 액세스 되는 데이터정보를 저장하므로 원본 데이터를 다시 검색하는것보다 빠르게 접근할 수 있어 응답 시간이 단축된다.
  • 캐시를 통해 반복적으로 동일한 데이터를 검색하거나 계산하지 않아도 되므로 시스템 자원(CPU, 대역폭)절약할 수 있습니다.
  • 대용량 데이터를 실제 저장소에 저장하기보다 캐시에 저장하여 스토리지 요구를 줄일수 있습니다.
  • 캐시 데이터는 주로 원본 데이터를 대표하므로 데이터 무결성을 유지합니다.

캐시 종류

  • 웹 브라우저 또는 웹 서버에서 사용하는 캐시로, 웹 페이지리소스를 저장하고 재사용합니다.
  • 네트워크 트래픽을 중계하는 프록시 서버가 사용하는 캐시클라이언트 요청 및 서버 응답을 저장하고 관리합니다.
  • 웹 콘텐츠를 가까운 위치에 복제하여 더 빠르게 제공하는 서비스로 캐시가 중요한 역할을 합니다.

캐시 효율적인 관리

👉 적절한 캐시 정책 설정

어떤 데이터캐싱할 것인지 결정하고 해당 데이터에 대한 캐시 정책을 설정하여 자주 변경되는데이터캐시하지 않는것이 좋습니다.

👉 만료 전략 구현

캐시데이터유효기간을 설정하여 만료전략을 구현합니다.

👉 캐시 폐기(Cache Eviction)

캐시 메모리가 한정적이므로 캐시 폐기 알고리즘을 구현하거나 주기적으로 폐기하여 공간을 확보하며 주로, 가장 오래된 데이터 또는 가장 적게 사용된 데이터폐기합니다.

👉 캐시 피어링(Cache Coherence)

여러 캐시 서버가 사용되는 경우 캐시 서버 간의 데이터 일관성을 유지하도록 조치합니다.

👉 성능 모니터링 및 튜닝

캐시의 성능을 지속적으로 모니터링하고 필요한 경우 튜닝 작업을 수행하는데 여기서 성능 모니터링 도구로그 분석을 활용합니다.

👉 보안 고려사항

중요한 데이터보안을 고려하여 캐시를 사용하지 않도록 합니다.

캐시 동작원리

캐시동작원리02
출처: 인프런 – 모든 개발자를 위한 HTTP 웹 기본 지식(김영한)

 

위의 그림처럼 웹 브라우저에서 서버로 요청을 하여 서버가 응답 헤더 값으로 Cache-controlmax-age60으로 주게 된다면 60초에 동안 응답 값을 캐시 해서 사용할 수 있습니다.

이때, 웹 브라우저에서 캐시로 저장된 시간인 60초가 지나게 된다면 캐시가 유효하지 않다고 판단하여 다시 서버에게 재요청을 하게 됩니다.

그럼 서버에서는 다시 응답 값으로 max-age60으로 보내줍니다.

이에 캐시 유효 시간이 초과하게 된다면 서버를 통해 데이터를 다시 조회하고 캐시를 갱신이 되어지면서 다시 네트워크 다운로드가 발생하게 됩니다.

캐시동작원리01
출처: 인프런 – 모든 개발자를 위한 HTTP 웹 기본 지식(김영한)

 

만약 위 그림처럼 캐시 유효 시간이 초과해서 서버에 다시 요청하는 경우에는 2가지 경우가 있는데

서버에서 기존 데이터를 변경하는 경우

서버에서 기존 데이터를 변경하지 않는 경우라면,

데이터를 전송하는 대신 저장해놓았던 캐시재사용할 수 있습니다.

But, 클라이언트데이터서버데이터가 같다는 사실을 확인을 해야만 하기때문에

Last-Modified라는 검증 헤더를 추가하며 데이터가 마지막에 수정된 시간을 기록합니다.

Leave a Comment