Cache-Control은 클라이언트(브라우저)와 중간 서버(proxy,CN 등)가 어떤 방식으로 캐싱할 지 지정하는 헤더
즉 특정 응답을 얼마나 오래, 어떻게 캐싱할 것인가를 결정
이를 잘 활용하면 불필요한 네트워크 요청을 줄이고 웹 성능 개선 가능
핵심은 특정 리소스를 얼마나 오래 저장할 수 있는지를 서버가 결정하는 것
웹 페이지를 방문할 때 브라우저는 서버에서 HTML, CSS, JS, 이미지 등의 리소스를 다운로드하는데, 이 리소스를 매번 다시 다운로드하지 않고 저장된 데이터를 활용하면 성능이 향상될 수 있음.
한편 모든 리소스를 무조건 캐시에 저장 시 최신 데이터가 반영되지 않는 문제가 발생할 수 있기 때문에, 리소스 유형 별로 적절한 캐싱 정책을 설정하는 것이 중요
ex - 자주 변경되지 않는 정적 리소스는 장기간 캐시에 저장해 불필요한 다운로드를 방지하는 것이 좋음
Cache-Control:public, max-age=31536000, imutable와 같은 헤더 설정할 수 있음
반편 변경 가능성이 높은 HTMl 문서는 항상 최신 상태를 유지할 수 있도로 매번 서버의 검증을 요구하는 방식으로 관리
이땐 Cache-Control: no-cache, must-revalidate와 같은 헤더 설정할 수 있음
캐싱 전략 잘못 설정 시 오래된 데이터를 계속 제공하거나 불필요한 네트워크 요청이 증가하는 등의 문제가 발생할 수 있으므로, 각 리소스의 특성을 고려하여 적절한 설정 적용
사용자의 대역폭 소비를 줄이고, 그에 따라 서버 부하를 낮추며, 페이지 로딩 속도를 개선하는 효과를 얻을 수 있음
특히, 네트워크 환경이 열악한 모바일 환경에서는 캐싱이 더욱 중요한 역할