콘텐츠 전송 네트워크는 재사용 가능한 응답을 방문자 가까이에서 제공하고 원본으로 반복되는 요청을 줄여 전송을 개선할 수 있습니다. 느린 리소스를 캐시할 수 있고 선택된 엣지에 유효한 복사본이 있을 때 효과적입니다. CDN이 느린 애플리케이션, 큰 이미지, 비싼 JavaScript를 자동으로 고치지는 않습니다. 전체 페이지 캐시에는 공개 정적 파일보다 엄격한 규칙이 필요합니다.
방문자부터 원본까지 요청을 따라갑니다
브라우저는 CDN 엔드포인트에 연결합니다. 엣지는 요청에 맞는 저장 응답이 있으며 재사용 가능한지 확인합니다. 신선한 적중이면 원본을 호출하지 않아도 됩니다. 적중하지 않으면 원본에서 가져온 뒤 응답을 저장해도 되는지 결정합니다.
만료된 객체는 빈 캐시와 같지 않습니다. CDN은 검증하거나 교체하거나 지원되는 오래된 응답 정책으로 제공할 수 있습니다. 헤더와 서비스 설정에 따라 달라지므로 HIT 이외 상태를 모두 같은 상황으로 취급하지 말고 상태 문서를 확인합니다.
CDN은 TLS 종료, HTTP/2나 HTTP/3, 압축, 이미지 변환도 제공할 수 있습니다. 이는 캐시 적중과 별개이며 추가 설정이나 서비스 등급이 필요할 수 있습니다. 더 빨라진다는 보장은 없습니다. 원본이 이미 가까운 방문자나 항상 캐시를 우회하는 페이지는 추가 계층의 이득이 작을 수 있습니다.
서버 응답 시간 가이드로 연결 지연, 원본 처리, 전송을 나누면 CDN이 실제 병목을 다루는지 알 수 있습니다. 스타일시트가 빨리 적중해도 HTML의 비싼 데이터베이스 작업은 그대로일 수 있습니다.
기본적으로 무엇을 저장하는지 확인합니다
모든 CDN에 공통인 기본값은 없습니다. 많은 서비스가 공개 이미지, CSS, JavaScript를 캐시하지만 HTML과 API는 적절한 헤더나 규칙이 필요합니다. 제품, 원본 유형, 모드에 따라 다르기도 합니다. 확장자만으로 저장을 입증할 수 없고 캐시 가능성도 계속 보관됨을 뜻하지 않습니다.
콘텐츠 종류별 문서와 대표 응답을 검사합니다. 키, 허용 메서드와 상태 코드, 쿠키와 인증 처리, 신선도, 만료 후 행동을 기록합니다. 시험 페이지가 빨라진다는 이유로 모든 것을 저장하는 설정을 계정 페이지에 적용하면 안 됩니다.
다음 패턴은 운영 조건이 다릅니다.
| 패턴 | 목적 | 필요한 제어 |
|---|---|---|
| 공개 해시 파일 | 방문자 간 동일 파일 재사용 | 바이트 변경 시 URL 변경 |
| 엣지의 공개 HTML | 반복 페이지 생성 방지 | 대상, 최신성, 무효화 명시 |
| 공유 캐시를 우회하는 개인 페이지 | 사용자별 응답 격리 | 세션과 권한 확인 |
| 공개 화면 틀과 비공개 데이터 요청 | 안정된 구조 공유와 데이터 보호 | 비공개 엔드포인트와 안전한 렌더링, 인증 |
브라우저 캐시 가이드는 별도 클라이언트 계층을 다룹니다. 두 정책을 맞춰야 합니다. CDN을 지워도 브라우저가 계속 재사용할 수 있는 파일을 확실하게 회수하지는 못합니다.
실제 응답을 표현하는 캐시 키를 만듭니다
키는 어떤 요청이 같은 객체를 공유하는지 정합니다. 보통 호스트, 경로, 일부 또는 전체 쿼리와 서비스별 변형이 포함됩니다. 언어, 통화, 이미지 크기가 응답을 바꾸면 그 차이를 키에 포함하거나 공유 저장에서 제외해야 합니다.
추적 매개변수를 무시하면 실제로 동일한 공개 응답을 합칠 수 있습니다. 모든 매개변수를 무시하면 필터, 이미지 변환, 서명된 요청을 잘못 합칠 수 있습니다. 애플리케이션 동작으로 입증한 허용 목록을 사용합니다. 이름이 중요하지 않아 보인다고 백엔드가 무시한다는 뜻은 아닙니다.
반대로 키를 지나치게 세분화할 수도 있습니다. 모두에게 같은 응답에 사용자 고유값을 넣으면 공유가 불가능합니다. 전체 Cookie 헤더는 조합마다 객체를 만들 수 있습니다. 실제 동작에 맞는 소수의 공개 변형을 명시하고 개인 계정 정보는 그 체계에 넣지 않습니다.
같은 응답을 공유해야 하는 요청 두 개와 분리해야 하는 요청 두 개를 적습니다. 출시 전과 개인화 수정 후 각각 시험하면 추상 규칙을 실제로 전달되는 내용과 연결할 수 있습니다.
공개 HTML의 신선도를 명확히 정합니다
세션 식별자, 계정 정보, 비공개 토큰, 다른 개인화 출력이 없음을 확인한 HTML만 엣지에 저장합니다. 대상 경로와 메서드를 제한하고 인증 요청과 관련 세션 쿠키는 우회합니다. 제공자가 원본의 private와 no-store를 존중해야 하며 무시하는 강제 규칙은 보호를 없앱니다.
실제로 공개인 HTML에는 다음 예시로 브라우저와 공유 캐시의 신선도를 나눌 수 있습니다.
Cache-Control: public, max-age=0, s-maxage=300브라우저 응답은 즉시 오래된 상태가 되고, 규격을 따르는 공유 캐시는 HTTP 응답 나이 계산과 다른 조건 아래 300초 동안 신선하게 취급할 수 있습니다. 이는 예시이지 모든 발행물의 권장값은 아닙니다. 허용할 업데이트 지연과 무효화의 신뢰성으로 기간을 정합니다.
민감한 개인 응답에는 제한적인 원본 헤더와 명시적인 CDN 우회 규칙을 함께 사용합니다.
Cache-Control: no-store캐시 가능하게 만들려고 이유를 모른 채 Set-Cookie를 제거하면 안 됩니다. 반대로 분석 쿠키처럼 공개 내용을 바꾸지 않는 쿠키도 있습니다. 응답의 실제 동작으로 결정하되 불명확하면 확인 전까지 공유 캐시에서 제외합니다.
분모를 정한 적중률을 측정합니다
요청 적중률은 보고서에 포함된 요청 가운데 적중한 비율입니다. 제공자마다 대상 요청, 전체 요청, 특정 상태를 세는 방식이 다릅니다. 대시보드 비교 전 정의를 확인합니다. 바이트 적중률은 요청 비율과 다른 질문에 답합니다.
HTML, 이미지, 다른 파일과 필요하면 지역별로 나눕니다. 높은 파일 적중률이 HTML 재사용 부족을 숨길 수 있습니다. 여러 노드에서 한 번씩만 요청되는 페이지는 계속 미스가 나고 인기 파일은 따뜻하게 남을 수 있습니다. 긴 수명도 축출을 막지 못하며 큰 네트워크가 모든 객체를 모든 사용자 가까이에 보장하지 않습니다.
적중, 미스, 우회를 TTFB, 원본 요청량, 실제 페이지 시간과 비교합니다. 배포 직후 차가운 요청과 안정 상태를 구분합니다. 따뜻한 URL을 반복 새로고침한 가장 빠른 결과는 전체 방문자를 대표하지 않습니다. PageSpeed 분석기는 페이지 점검을 돕지만 CDN 전체 적중률 보고서는 아닙니다.
정확히 무효화하고 안전한 순서로 배포합니다
해시 파일은 같은 위치에서 교체하기보다 새 URL을 발행하는 편이 보통 간단합니다. HTML보다 파일을 먼저 올리고 이전 페이지와 열린 세션을 위해 옛 파일을 유지합니다. 엣지 삭제가 버전 관리를 대신하지는 않습니다.
안정적인 HTML URL은 URL별 무효화나 지원되는 콘텐츠 태그를 사용합니다. 기사를 바꾸면 카테고리, 홈페이지, 관련 콘텐츠도 영향을 받을 수 있습니다. 관련 의존성은 처리하되 무관한 파일까지 불필요하게 제거하지 않습니다.
전체 삭제는 미스와 원본 작업을 급증시킬 수 있습니다. 실행 권한, 실패 대응, 오래된 응답 감지를 정합니다. API가 요청을 접수했다는 응답뿐 아니라 게시, 미리보기, 되돌리기 전체를 시험합니다. 분산 무효화의 전파와 완료 보장은 서비스마다 다릅니다.
일부 서비스의 원본 보호 캐시인 origin shielding은 엣지 미스를 추가 캐시로 모읍니다. 원본 요청을 합칠 수 있지만 진단과 무효화할 계층도 늘어납니다. 작업 특성과 설정이 맞을 때 유용한 것이지 추가 캐시가 항상 개선은 아닙니다.
여러 캐시가 겹쳐 생기는 오류를 찾습니다
호스팅, CDN, 브라우저가 서로 다른 최신성 규칙을 가질 수 있습니다. 응답을 생성한 계층과 재사용한 계층을 기록합니다. Age는 응답 나이 파악을 돕지만 제공자 전용 상태는 해당 문서로 해석해야 합니다. 헤더 하나로 전체 경로를 추측하지 않습니다.
HTTPS, 호스트 리디렉션, 정규 URL 라우팅이 불필요한 왕복을 만들지 확인합니다. 방문자가 CDN만 접하더라도 원본 인증서와 인증을 유지합니다. 빠른 엣지가 노출되거나 잘못 연결된 원본을 정당화하지 않습니다.
이미지 변환은 크기, 형식, 품질별 변형을 만듭니다. 캐시 설계에 포함하고 임의 변형을 제한하며 실제 크기와 바이트를 확인합니다. 이미지 최적화 가이드는 가까운 전송만으로 해결되지 않는 작업을 설명합니다.
오래된 응답을 허용할 때도 콘텐츠별 결정이 필요합니다. 잠시 이전 기사를 보여 주는 것과 오래된 계정 권한이나 거래 상태는 다릅니다. 정적 콘텐츠 규칙을 민감한 엔드포인트에 복사하지 않습니다. 여기서는 최신성과 권한이 선택적인 성능 설정이 아니라 정확성 조건입니다.
작은 범위부터 적용하고 되돌릴 방법을 둡니다
공개 파일 한 종류부터 시작하고 적절하다면 검증한 HTML 경로 하나로 확장합니다. 차가운 요청, 반복 요청, 변경된 문서, 오류를 시험합니다. 두 독립 세션에서 개인 데이터가 섞이지 않고 로그인과 로그아웃이 올바르게 동작하는지 확인합니다.
환경의 실제 공개 URL에 GET을 보내 헤더를 기록합니다.
curl -sS -D - -o /dev/null https://example.com/news/문서화된 캐시 상태, Cache-Control, 존재한다면 Age, 실제 본문을 살핍니다. 허용된 진단 경로로 원본과 비교합니다. 상태 헤더가 맞아도 본문이 다르면 성공한 시험이 아닙니다.
대상 규칙, 무효화, 되돌리기 절차를 함께 보관합니다. 확장 시 서버 성능 모음과 공식 CDN 개요를 참고합니다. 다음 콘텐츠 종류의 측정 이득과 업데이트 동작이 명확할 때만 저장 범위를 넓힙니다.