QUESTION #0206
프론트엔드

Cache-Control 헤더에 대해 설명해주세요.

Cache-Control 헤더에 대해 설명해주세요.

분야: 프론트엔드


Cache-Control은 클라이언트(브라우저)와 중간 서버(proxy, CDN 등)가 어떤 방식으로 캐싱할지를 지정하는 헤더입니다. 즉, “특정 응답을 얼마나 오래, 어떻게 캐싱할 것인가”를 결정합니다. 이를 잘 활용하면 불필요한 네트워크 요청을 줄이고 웹 성능을 개선할 수 있습니다.

Cache-Control의 핵심은 특정 리소스를 얼마나 오래 저장할 수 있는지를 서버가 결정하는 것입니다. 웹 페이지를 방문할 때 브라우저는 서버에서 HTML, CSS, JavaScript, 이미지 등의 리소스를 다운로드하는데, 이 리소스를 매번 다시 다운로드하지 않고 저장된 데이터를 활용하면 성능이 향상될 수 있습니다. 한편, 모든 리소스를 무조건 캐시에 저장하면 최신 데이터가 반영되지 않는 문제가 발생할 수 있기 때문에, 리소스 유형 별로 적절한 캐싱 정책을 설정하는 것이 중요합니다.

예를 들어, 자주 변경되지 않는 정적 리소스는 장기간 캐시에 저장해 불필요한 다운로드를 방지하는 것이 좋습니다. Cache-Control: public, max-age=31536000, immutable와 같은 헤더를 설정할 수 있습니다. 반면, 변경 가능성이 높은 HTML 문서는 항상 최신 상태를 유지할 수 있도록 매번 서버의 검증을 요구하는 방식으로 관리해야 합니다. 이때는 Cache-Control: no-cache, must-revalidate와 같은 헤더를 설정할 수 있습니다.
캐싱 전략을 잘못 설정하면 오래된 데이터를 계속 제공하거나 불필요한 네트워크 요청이 증가하는 등의 문제가 발생할 수 있으므로, 각 리소스의 특성을 고려하여 적절한 설정을 적용해야 합니다.

캐싱의 장점에 대해서 설명해주세요. 🤔

캐싱을 잘 활용하면 사용자의 대역폭 소비를 줄이고, 그에 따라 서버 부하를 낮추며, 페이지 로딩 속도를 개선하는 효과를 얻을 수 있습니다. 특히, 네트워크 환경이 열악한 모바일 환경에서는 캐싱이 더욱 중요한 역할을 합니다.

프로젝트에서 수립하신 캐싱 전략에 대해서 공유해주세요. 🧐

개인의 경험을 묻는 질문입니다. 경험에 기반하여 정돈된 형태로 답변하는 연습을 해보세요.

📚 추가 학습 자료를 공유합니다.