본문으로 이동
웹 서비스 캐시 똑똑하게 다루기
문서

웹 서비스 캐시 똑똑하게 다루기

박서진 토스 · 토스 기술 블로그

원문 보기

AI 핵심 요약

HTTP 캐시는 브라우저와 CDN 등 여러 계층에 저장되며, 한 번 저장된 브라우저 캐시는 CDN Invalidation만으로 지울 수 없어 Cache-Control을 신중히 설정해야 합니다. 토스 프론트엔드 챕터는 HTML에 브라우저 재검증용 max-age=0과 CDN용 s-maxage를 조합하고, 배포 때 CDN 캐시를 무효화했습니다. JS와 CSS는 빌드마다 URL에 고유 버전을 붙여 콘텐츠가 바뀌지 않도록 하고, max-age를 1년으로 설정했습니다. 리소스의 변경 가능성과 캐시 위치에 맞춰 헤더를 설계하면 불필요한 요청과 트래픽을 줄이면서 최신 콘텐츠와 빠른 로딩을 함께 확보할 수 있습니다.

  • max-age는 브라우저가 서버에 요청하지 않고 캐시를 사용할 수 있는 기간을 정하므로, 같은 URL의 콘텐츠가 바뀔 가능성을 고려해 설정하세요.
  • no-cache는 저장 후 사용할 때마다 재검증하는 지시이고, no-store는 캐시 저장 자체를 금지합니다.
  • CDN Invalidation은 CDN 캐시만 지우며 브라우저 캐시에는 영향을 주지 않습니다.
  • ETag와 Last-Modified를 활용한 조건부 요청은 리소스가 그대로일 때 본문 없이 304 응답을 받을 수 있습니다.

소개

웹 성능을 위해 꼭 필요한 캐시, 제대로 설정하기 쉽지 않습니다. 토스 프론트엔드 챕터에서 올바르게 캐시를 설정하기 위한 노하우를 공유합니다.

비슷한 학습 자료

문서 김경윤

TPS가 평균 1만, 최대 2만까지 늘어난 약관(terms) 서버에 안정적인 서비스 제공을 위해 캐시를 적용한 이야기를 들려드리려고 해요.

백엔드 데이터베이스

문서 정석호

토스 프론트엔드 챕터에서는 하나의 모노레포에서 200여개가 넘는 서비스를 관리하고 있어요. 이렇게 커진 모노레포에서도 git push 부터 배포까지 5분을 유지할 수 있는 비결을 소개합니다!

프론트엔드 데브옵스 · 인프라

문서 김신

대용량 트래픽 환경에서 캐시를 사용할 때 주의해야할 위험 상황과 예방법을 소개합니다.

백엔드 데이터베이스

문서 임재후/최수민

웹에서 복잡한 퍼널 쉽게 관리하기

문서 임재후/최수민

토스페이먼츠 프론트엔드 챕터에서 웹에서 퍼널을 손쉽게 관리하기 위해 했던 고민과 해결 방법을 공유해요.

웹 개발 프론트엔드

문서 한재엽

SPA(Single Page Application) 구조로 웹 프론트엔드 애플리케이션이 개발되면서 초기 렌더링 속도는 프런트엔드 개발자에게 중요한 과제 중 하나가 되었습니다. 사용자 경험에 영향을 줄 수 있는 가장 큰 요소 중 하나가 바로 속도이기 때문입니다.

웹 개발 프론트엔드

문서 이지윤

디자이너들도 어떻게 하면 빠른 속도를 내며 전체적인 경험을 맞출 수 있을지 매 순간 고민하고 있어요.

UI/UX