304

Not Modified

개요

304 Not Modified는 조건부 요청에 대해 클라이언트가 캐시한 사본이 여전히 유효하므로 본문을 다시 보내지 않는다는 응답입니다. 클라이언트는 If-None-Match(ETag 기반)나 If-Modified-Since(시각 기반)로 자신이 가진 버전을 서버에 알립니다.

리소스가 바뀌지 않았다면 서버는 헤더만 담은 짧은 304를 돌려주고, 클라이언트는 로컬 캐시를 그대로 재사용합니다. 이는 재검증(revalidation) 캐싱의 핵심으로 대역폭과 지연을 크게 줄여 줍니다.

언제 발생하나

요청 / 응답 예시

요청
GET /styles/main.css HTTP/1.1
Host: example.com
If-None-Match: "a1b2c3"
If-Modified-Since: Wed, 15 Jul 2026 10:00:00 GMT
응답
HTTP/1.1 304 Not Modified
ETag: "a1b2c3"
Cache-Control: max-age=3600
Date: Wed, 16 Jul 2026 09:00:00 GMT

코드로 보기

// Express sets ETag automatically and returns 304 when
// the incoming If-None-Match matches:
app.get('/data', (req, res) => res.json(payload));
curl -i -H 'If-None-Match: "a1b2c3"' https://example.com/styles/main.css
# -> HTTP/1.1 304 Not Modified (no body sent)

실무 참고

관련 상태코드

관련 헤더

스펙 근거