304 수정되지 않음 응답이란 무엇인가요?
304 Not Modified HTTP 서버 응답 코드는 요청된 리소스가 마지막으로 로드된 이후 수정되지 않았으므로 다시 전송할 필요가 없음을 나타냅니다. 브라우저의 경우 이는 리소스의 캐시된 버전을 사용자에게 표시할 수 있음을 의미합니다. Googlebot과 같은 크롤러의 경우 페이지에 변경된 사항이 없으므로 페이지를 다시 크롤링할 필요가 없음을 의미합니다.
작동 방식
다음은 304 수정 안 됨 응답이 어떻게 작동하는지에 대한 간단한 설명입니다:
-
초기 요청 클라이언트(브라우저 또는 크롤러)가 웹 서버에 리소스를 처음 요청하면 서버는 요청된 리소스를 200 OK HTTP 코드와 함께 해시 코드인 ETag로 전송합니다. 클라이언트는 페이지/리소스를 요청한 시간도 기록합니다.
-
후속 요청 클라이언트가 리소스를 다시 요청하면 서버는 클라이언트로부터
If-None-Match
및/또는If-Modified-Since
헤더를 확인합니다. 이를 조건부 HTTP 요청이라고 합니다.If-None-Match에는
ETag(콘텐츠 해시 코드)가 포함됩니다. 서버의 값과 일치하면 콘텐츠가 변경되지 않았으므로 다시 로드할 필요가 없음을 나타냅니다(콘텐츠가 변경되면 해시 코드도 변경됩니다).If-Modified-Since에는
클라이언트가 마지막으로 콘텐츠를 요청한 날짜와 시간이 포함됩니다. 서버가 이 날짜 이후 콘텐츠가 변경되지 않았다고 판단하면 리소스를 클라이언트에 보낼 필요가 없습니다.
-
서버 응답 두 경우 모두 콘텐츠가 변경되지 않은 경우 서버는 304 HTTP 코드로 응답합니다.
만약 일치하지 않는
경우와 수정된 이후를
모두 사용하는 경우, 만약 일치하지 않는
경우가 수정된 이후보다
우선합니다.
브라우저 및 크롤러 동작
브라우저가 서버로부터 수정되지 않음 304 HTTP 코드를 수신하면 캐시된 버전을 사용자에게 표시하여 클라이언트 측 리디렉션 코드 중 하나로 만듭니다. 크롤러의 경우 304 응답을 받으면 동일한 콘텐츠를 다시 다운로드하지 않아도 되므로 대역폭과 리소스를 절약할 수 있습니다.
304 응답 코드가 중요한 이유는 무엇인가요?
소규모 웹사이트의 경우 304 HTTP 코드가 제공하는 캐싱 이점이 그다지 크지 않을 수 있습니다. 하지만 대규모 웹사이트의 경우 304 응답 코드는 상당한 이점을 제공합니다:
- 성능 최적화 캐시된 콘텐츠를 활용하면 브라우저는 사용자에게 페이지를 더 빠르게 로드하여 전반적인 사용자 환경을 개선할 수 있습니다.
- 크롤링예산 관리 대규모 사이트의 경우 크롤링 예산 관리가 중요합니다. Google 크롤러는 변경되지 않은 페이지는 다시 크롤링하지 않으므로 새롭고 업데이트된 콘텐츠에 집중할 수 있습니다. 이렇게 하면 새로운 콘텐츠가 보다 효율적으로 색인화됩니다.
수정되지 않은 304 사용 모범 사례
- 적절한 캐시 헤더 설정 서버가 적절한
ETag
및마지막 수정
헤더를 전송하도록 구성되어 있는지 확인합니다. - 캐시 효율성 모니터링 서버 로그를 정기적으로 확인하여 304 응답이 얼마나 자주 발행되는지 확인하고 필요에 따라 캐싱 정책을 조정하세요.
- 콘텐츠 전송 최적화 효율적인 캐싱 메커니즘을 지원하는 CDN(콘텐츠 전송 네트워크)을 사용하여 지연 시간을 줄이고 로드 시간을 개선하세요.
웹 성능 및 SEO에 대한 HTTP 상태 코드 및 모범 사례에 대한 자세한 내용은 Mozilla 개발자 네트워크(MDN) 및 Google의 웹 기본 사항과 같은 공신력 있는 출처를 참조하세요.