ExpiresExpires는 응답이 신선하지 않게 되는(stale) 절대 시각을 지정하는 캐싱 헤더입니다. 이 시각 전까지 캐시는 서버에 다시 묻지 않고 저장된 응답을 그대로 재사용할 수 있습니다.
HTTP/1.0 시절부터 있는 오래된 헤더이며, 현재는 Cache-Control: max-age로 대체되었습니다.
값은 GMT 기준 HTTP-date여야 합니다. 형식이 잘못되었거나 0 같은 값이면 과거 시각으로 해석되어 응답이 즉시 만료된 것으로 취급됩니다. 실제로 Expires: 0은 캐시 비활성화 관용구로 쓰입니다.
Cache-Control: max-age(상대 시간, 초)가 함께 있으면 Expires는 무시됩니다. max-age는 응답을 받은 시점 기준이라 클라이언트·서버 시계 오차에 영향을 덜 받으므로 항상 권장됩니다.
Expires는 절대 시각이라 클라이언트 시계가 틀리면 신선도 판단이 어긋납니다. 또한 응답이 캐시된 순간부터가 아니라 명시된 시각까지만 유효하므로, CDN·프록시를 거치며 Age가 쌓인 경우 남은 신선도(freshness lifetime - Age)를 정확히 계산하려면 Date 헤더가 필요합니다.
Expires: <HTTP-date>e.g. Expires: Wed, 21 Oct 2025 07:28:00 GMT