HTTP 캐시 만료 계산기

응답의 Cache-Control, Expires, Date, Age 값과 응답을 받은 시각, 확인할 시각을 입력하세요. 신선도 수명, 현재 나이, 응답이 아직 신선한지를 계산합니다.

캐시 종류
s
신선도 판정 (확인할 시각 기준) —
신선도 수명 (응답이 신선한 상태로 유지될 수 있는 시간, 시간이 지나도 변하지 않음)
신선도 수명—
사용한 근거—
현재 나이 (응답이 생성된 후 경과한 시간, 시간이 지나면 증가)
현재 나이—
  겉보기 나이 (받은 시각 − Date)—
  Age 헤더의 값—
  받았을 때의 나이 (위 두 값 중 큰 값)—
  받은 후 경과 시간—
남은 신선도
남은 신선도 (신선도 수명 − 현재 나이)—
오래된 상태가 되는 시각—

    RFC 9111에 기반한 계산입니다. 실제 브라우저와 CDN이 항상 표준에 기술된 대로 동작하는 것은 아닙니다. 응답 지연은 0으로 간주합니다.

    이 계산기가 하는 일

    HTTP 캐시 표준인 RFC 9111의 한 부분, 즉 신선도 계산을 다룹니다. 저장된 응답을 원본 서버에 확인하지 않고 재사용해도 되는지 판단하는 부분입니다. 검증(ETag, If-Modified-Since, 304), Vary, 요청 쪽 Cache-Control은 다루지 않습니다.

    신선도는 새로고침도 삭제도 아닙니다

    응답이 **오래된 상태(stale)**라는 것은 캐시가 먼저 확인하지 않고는 재사용할 수 없다는 뜻일 뿐입니다. 브라우저 화면이 저절로 새로고침된다는 뜻이 아니며, 원본 서버의 파일이 변경되거나 삭제된다는 뜻도 아닙니다. 마찬가지로 응답이 신선하다고 해서 서버의 파일이 변경되지 않았다는 뜻은 아닙니다. 표준은 Expires 헤더가 "원본 리소스가 그 시각에, 그 이전에, 또는 그 이후에 변경되거나 사라진다는 것을 의미하지 않는다"고 설명합니다. 이 계산기는 캐시된 사본의 시간 계산만 수행합니다.

    신선도 수명과 현재 나이

    신선도 수명을 정하는 값

    RFC 9111 4.2.1절에 따라 처음으로 해당하는 값을 사용합니다:

    순서 공유 캐시 (CDN, 프록시) 비공개 캐시 (브라우저)
    1 s-maxage (s-maxage는 사용하지 않음)
    2 max-age max-age
    3 Expires − Date Expires − Date
    4 아무것도 없으면 명시적인 만료 시각이 없음 동일

    현재 나이(age)를 계산하는 방법

    공식은 RFC 9111의 4.2.3절을 따릅니다.

    이 계산기는 요청을 보낸 시각을 입력받지 않으므로, 응답 지연(요청을 보내고 응답을 받기까지의 시간)을 0으로 간주합니다. 지연이 큰 연결에서는 계산된 나이가 실제보다 작을 수 있습니다. 표준에서는 Age 헤더에 지연만 더해서 사용하는 것도 허용합니다.

    입력 규칙

    그 밖의 Cache-Control 지시어

    계산에는 사용하지 않지만, 재사용에 관한 참고로 표시합니다.

    예시

    입력 결과
    max-age=3600, Age 없음, 수신 후 1,800초 경과 신선도 수명 3,600초, 현재 나이 1,800초, 1,800초 남음(신선함)
    같은 조건에서 정확히 3,600초 경과 현재 나이 3,600초. 신선도 수명과 같으므로 오래된 상태입니다
    max-age=3600, Age=600, 막 수신한 직후 현재 나이 600초, 3,000초 남음
    s-maxage=60, max-age=3600인 공유 캐시 신선도 수명 60초(max-age는 무시됨)

    알아 둘 점

    출처와 확인 내용

    다음 내용은 2026년 11월 1일에 표준 전문과 대조해 확인했습니다.

    이 계산기는 신선도에 대해서만 해당 절을 따릅니다. 이 계산을 통과했다고 해서 제품이나 서버가 표준을 준수한다는 의미는 아닙니다.

    자주 묻는 질문

    max-age와 Expires가 모두 있으면 어떻게 되나요?

    max-age가 우선하며 Expires는 무시됩니다(RFC 9111, 5.3절).

    s-maxage는 브라우저에도 적용되나요?

    s-maxage는 공유 캐시용 지시어입니다. 프라이빗 캐시(브라우저)는 사용하지 않습니다.

    Age 헤더란 무엇인가요?

    응답이 생성되었거나 원본 서버에서 마지막으로 확인된 이후의 경과 시간(초)을 중간 캐시가 기록한 값입니다. 이 계산기는 현재 나이를 구할 때 이 값을 사용합니다.

    오래된(stale) 응답은 저절로 사라지거나 갱신되나요?

    아니요. stale은 재사용하기 전에 캐시가 확인해야 한다는 뜻일 뿐입니다. 화면이 새로고침되거나 원본 서버의 내용이 바뀌지는 않습니다.

    시각은 어떻게 확인하나요?

    Unix 타임스탬프 변환기와 Cron 표현식 계산기가 도움이 될 수 있습니다.