HTTP 캐시 헤더 시뮬레이터
HTTP Cache Header Simulator
Cache-Control, ETag, Last-Modified를 입력하고 요청을 하나씩 흘려보내며 브라우저 캐시와 CDN이 각각 무엇을 하는지 확인하세요. no-cache가 저장을 막지 않는 이유, s-maxage가 브라우저에 닿지 않는 이유, 재검증 왕복까지 단계별로 보여줍니다.
응답 헤더
해석된 디렉티브
publicimmutablemax-age=31536000
요청 타임라인
단계별 결과
- t = 0s일반 요청브라우저 캐시미스 → 저장저장 후 경과: —신선도 수명: 31536000sCDN / 공유 캐시미스 → 저장저장 후 경과: —신선도 수명: 31536000s오리진까지 감 (200)본문 전송됨
- t = 30s일반 요청브라우저 캐시신선한 히트저장 후 경과: 30s신선도 수명: 31536000s오리진까지 가지 않음본문 전송 없음
- t = 90s일반 요청브라우저 캐시신선한 히트저장 후 경과: 90s신선도 수명: 31536000s오리진까지 가지 않음본문 전송 없음
- t = 120s새로고침(F5)브라우저 캐시immutable 히트저장 후 경과: 120s신선도 수명: 31536000s
- · immutable이라 새로고침해도 재검증하지 않습니다. 바로 이게 immutable의 존재 이유입니다.
오리진까지 가지 않음본문 전송 없음
네트워크 없이 처리된 요청
4건 중 3건
오리진에 도달한 요청
4건 중 1건
본문이 전송된 횟수
4건 중 1건
이 시뮬레이터가 알려주는 것
- · no-cache는 "저장하지 마라"가 아닙니다. "저장하되 쓰기 전에 반드시 물어봐라"입니다. 저장을 막는 건 no-store 뿐입니다.
- · max-age는 브라우저와 CDN 둘 다에 적용되지만, s-maxage는 CDN에만 적용되고 브라우저는 무시합니다. private이면 CDN은 아예 저장하지 않습니다.
- · ETag가 없으면 재검증이 조건부 요청이 되지 못하고 본문을 통째로 다시 받습니다. 만료가 곧 전체 재다운로드가 됩니다.
- · 명시적 수명이 없으면 캐시는 휴리스틱으로 추측합니다. RFC가 값을 정하지 않아 구현마다 다르므로, 이 도구는 그 구간을 "구현마다 다름"으로 표시하고 재검증하는 쪽으로 가정합니다.