TrueURL
TrueURL

메뉴

304 수정되지 않음

조건부 GET 또는 HEAD에 대한 응답입니다. 클라이언트의 캐시 사본이 아직 유효하므로 서버는 본문을 보내지 않고, 캐시 사본이 재사용됩니다.

사유 구절
Not Modified
리디렉션 여부
아니요
기본 캐시 가능 여부
아니요

304 Not Modified는 If-None-Match나 If-Modified-Since가 담긴 조건부 GET 또는 HEAD 요청에서, 클라이언트가 저장한 사본이 아직 최신이라는 조건이 확인되었을 때 보내는 응답입니다. 서버는 리소스를 다시 보내는 대신 304로 응답하고, 클라이언트는 캐시된 사본을 사용합니다. 그만큼 대역폭과 시간이 절약됩니다.

304에는 본문이 없으며, 헤더 뒤의 빈 줄로 끝납니다. 서버는 Cache-Control, Content-Location, Date, ETag, Expires, Vary 헤더 중 200 응답이었다면 포함되었을 헤더를 보내야 하며, 캐시는 이를 바탕으로 저장된 응답을 갱신합니다.

304는 3xx 범위에 있지만 리디렉션이 아닙니다. Location이 없고, 클라이언트는 같은 URL에 머무릅니다. 조건부 요청을 보내지 않았는데 304를 받았다면 클라이언트가 고장 난 서버와 통신하고 있는 것입니다.

응답 예시

HTTP
HTTP/1.1 304 Not Modified
Date: Fri, 06 Nov 2026 10:15:32 GMT
ETag: "5f2b-1a3c"
Last-Modified: Wed, 28 Oct 2026 08:02:11 GMT
Cache-Control: public, max-age=600
Vary: Accept-Encoding

SEO 및 리디렉션 검사

304는 크롤링에 도움이 됩니다. Google 크롤러는 조건부 요청을 지원하며, 304는 마지막 크롤링 이후 콘텐츠가 바뀌지 않았다고 Googlebot에 알려 줍니다. 페이지는 색인에서 제자리를 유지하면서 크롤링 용량과 서버 부하를 아낄 수 있으므로, 특히 대규모 사이트라면 신뢰할 수 있는 ETag나 Last-Modified 헤더를 갖춰 둘 가치가 있습니다.

TrueURL은 기본적으로 조건부 헤더를 보내지 않으므로 304가 아니라 200이 표시됩니다. 재검증을 테스트하려면 사용자 지정 요청 헤더에 페이지의 ETag 값을 담은 If-None-Match 헤더를 추가하세요.

주요 원인과 사용 사례

  • 브라우저가 캐시된 페이지, 이미지, 스크립트를 If-None-Match로 재검증했고 ETag가 여전히 일치합니다.
  • 크롤러나 피드 리더가 If-Modified-Since로 다시 가져왔는데 바뀐 내용이 없습니다.
  • 배포 후에도 서버가 계속 304로 응답해 방문자에게 오래된 콘텐츠가 보입니다. 검증자가 바뀌지 않은 것이 원인으로, 예를 들어 파일 크기와 수정 시각으로 만든 ETag가 배포 후에도 그대로 유지된 경우입니다. 콘텐츠가 바뀔 때마다 검증자도 바뀌도록 하세요.

URL 리디렉션 검사

무료 TrueURL 리디렉션 검사 도구로 URL이 반환하는 모든 상태 코드를 홉별로 확인하세요.