Hostwinds 블로그
에 대한 검색 결과:
304 수정되지 않은 응답이란 무엇입니까?
HTTP 304 수정되지 않은 상태 코드는 마지막 요청 이후 요청 된 리소스가 변경되지 않았 음을 나타내는 리디렉션 코드입니다.
간단히 말해서, 서버는 브라우저의 마지막 방문 이후 요청하는 페이지/리소스가 업데이트/변경되지 않았다고 브라우저에 알리고 있습니다.따라서 시간이 걸리고 대역폭을 소비하는 페이지/리소스를 다시 중단하고 다시 다운로드하는 대신 브라우저는 캐시에 저장된 기존 페이지/리소스를 표시 할 수 있다고 들었습니다.
서버가 304 상태 코드로 응답하려면 브라우저 캐시에 저장된 리소스가 데이터베이스에 저장된 동일한 버전인지 알아야합니다.
작동 방식은 다음과 같습니다.
브라우저가 처음으로 웹 페이지를 방문하면 사이트의 웹 서버에서 저장된 리소스를 요청합니다.
웹 서버는 200 OK HTTP 코드로 요청에 응답하고 리소스를 브라우저로 보냅니다.해당 응답에 HTTP 헤더 내에 해시 코드 또는 ETAG (Entity Tag)가 포함되어 있습니다. 일반적으로 웹 사이트/페이지/리소스가 수정되거나 업데이트 될 때마다 변경됩니다.
웹 페이지 컨텐츠를 캐싱하는 것과 함께 브라우저는 요청의 시간/날짜를 기록합니다.
동일한 웹 페이지를 다시 방문하면 브라우저는 조건부 HTTP 요청을 시작하여 웹 서버에 특정 조건에서만 서버 데이터베이스에서 웹 페이지 리소스를 수집하고 브라우저가 다운로드하도록 보내는 경우 웹 서버를 알려줍니다.
조건부 요청에 사용되는 두 가지 기본 HTTP 헤더가 있으며, 각각 브라우저의 캐시에 저장된 웹 페이지 버전에 대한 정보가 포함되어 있습니다.
"if-modified-since"에는 브라우저가 마지막으로 웹 페이지를 요청한 날짜/시간이 포함되어 있습니다.
"if-none-match"에는 ETAG (해시 코드)가 포함됩니다.
웹 서버는 조건부 요청을 취하고 HTTP 헤더 정보를 데이터베이스의 정보와 비교하여 200 OK 또는 304 수정되지 않은 상태를 반환합니다.
HTTP 헤더에서 "If-modified-since"가 발견되면 웹 서버는 웹 페이지가 끝에 업데이트 된 날짜/시간을 브라우저에 의해 캐시 된 날짜/시간과 비교합니다.
HTTP 헤더에서 "if-none-match"가 발견되면 웹 서버는 데이터베이스의 웹 페이지의 ETAG가 브라우저의 캐시 된 웹 페이지의 ETAG와 일치하는지 확인합니다.
두 헤더 모두 검증에 사용되는 경우 "IF-NONE MATCH"는 "IF MODIFIED-SINCE"보다 우선합니다.
웹 서버 정보가 헤더 정보와 일치하면 웹 서버는 304 수정되지 않은 HTTP 코드로 응답하여 브라우저에 캐시 된 버전의 웹 페이지를 표시하도록 지시합니다.정보가 일치하지 않으면 서버가 업데이트 된 웹 페이지를 검색하여 브라우저로 보내면 향후 조건부 HTTP 요청을 위해 다운로드 및 캐시됩니다.
304 HTTP 코드의 값은 실제로 웹 사이트의 크기에 따라 다릅니다.
대형 웹 사이트 (수만 페이지)의 경우 304 개의 응답 코드는 대역폭 사용을 줄이고 더 나은 사용자 경험을 위해 사이트 속도를 높이는 데 도움이 될 수 있습니다.또한 크롤링 예산을 확보함으로써 SEO에 도움이 될 수 있으며 잠재적으로 더 빠른 인덱싱을 허용 할 수 있습니다. 검색 엔진 봇은 일반적으로 변경되지 않은 페이지를 다시 해제하지 않으므로 새롭고 업데이트 된 페이지를 더 빨리 찾아 크롤링 할 수 있습니다.
소규모 사이트는 또한 304 HTTP 코드의 캐싱 능력의 혜택을받을 수 있지만 장점은 매우 무시할 수 있습니다.
즉, 소규모 사이트는 과도한 양의 트래픽을 경험하여 대역폭을 빠르게 소비 할 수 있으며,이 경우 304 코드는 잠재적으로 유익 할 수 있습니다.그러나 그러한 문제를 완화하는 더 좋은 방법이 있습니다.
304 상태 코드는 중복 데이터 전송을 피함으로써 웹 성능을 최적화하고 대역폭을 저장하기위한 훌륭한 자산입니다.
오류 코드 (4xx 또는 5xx)에 비유하는 것이 있지만 그렇지 않습니다.브라우저 (클라이언트)와 서버가 작업을 통신하고 실행하기 위해 사용하는 리디렉션 코드입니다.
즉, 클라이언트와 서버 간의 통신이 중단되거나 파손되는 상황이있을 수 있습니다.이 문제를 오래된 304라고합시다.
사용자가 빈번한 사이트에서 304 수정되지 않은 상태 코드를 지속적으로 만나면 조건부 HTTP 요청을 올바르게 실행하고 업데이트 된 콘텐츠를 다운로드 할 수 없다는 점에서 브라우저의 문제를 나타낼 수 있습니다.
이 문제는 일반적으로 브라우저 기반 애플리케이션의 손상된 파일, 최근 다운로드 된 소프트웨어의 손상된 파일 및 바이러스 또는 맬웨어와 같은 외부 소스에서 비롯됩니다.
이러한 소스 중 하나는 브라우저의 캐시를 손상 시키거나 브라우저가 웹 서버와 통신하는 방식에 영향을 줄 수 있습니다.
오래된 304는 웹 서버의 리디렉션 설정과 관련된 문제로 인한 것일 수 있습니다.
리디렉션 설정은 3xx 상태 코드를 사용하여 웹 트래픽이 사이트에서 지시되거나 재배치되는 방식을 제어하는 .htaccess 파일 시스템에있는 지시문입니다.
부적절하게 구성된 304 상태 코드 지시문은 오래된 컨텐츠 전달, 서버 리소스의 비효율적 인 사용 또는 브라우저 호환성 문제로 이어질 수 있습니다.
다행스럽게도, 오래된 304를 해결하거나 완전히 피하기 위해 취할 수있는 조치가 있습니다.
가장 일반적이고 효과적인 방법은 모든 브라우징 기록, 쿠키 및 기타 캐시 된 데이터를 삭제하는 것입니다.
이전에 저장된 모든 웹 페이지가 제거되고 웹 사이트는 더 이상 브라우저 데이터를 저장하지 않습니다.사용자가 사이트를 방문하면 마치 처음 방문하는 것처럼 보이고 이제는 사이트의 새로운 사본이 있습니다.
DNS 캐시는 브라우저 캐시와 같은 데이터를 저장하는 것과 동일한 방식으로 작동하지만 운영 체제에서 작동합니다.IP 주소, 호스트 이름 및 리소스 레코드와 함께 브라우징 데이터도 보유합니다.
추가 저장된 데이터를 통해 브라우저가 전체 도메인 이름 시스템 프로세스를 통과 할 필요가 없으므로 웹 페이지가 더 빨리로드 될 수 있습니다.
또한 브라우저 캐시를 지우는 것과 마찬가지로 DNS 캐시를 플러싱하면 기본적으로 웹 서핑 경험을 재설정하여 사용자 (브라우저)가 신선한 캐시 가능한 컨텐츠를 수집 할 수 있습니다.
맬웨어 또는 바이러스에 감염된 브라우저는 손상된 브라우저 캐시 파일과 웹 서버와의 통신을 인터럽트합니다.
바이러스 및 맬웨어를 스캔하면 위협을 식별하고 제거하여 브라우저가 정상 작업을 재개 할 수 있습니다.
우리는 모두 좋은 브라우저 확장을 좋아하지만 일부 확장에는 브라우저의 캐시에 들어가는 손상된 파일이 포함되어있어 HTTP 헤더가 웹 서버와 통신하는 방식에 영향을 미칩니다.
연장을 검토하고 하나씩 연장을 비활성화하거나 제거하면 범인을 정확히 찾아 낼 수 있습니다.
서버쪽에는 .htaccess가 있습니다. 이것은 304 개의 상태 코드를 처리하는 방법을 포함하여 디렉토리 수준에서 웹 사이트의 동작을 제어하는 서버 구성 파일입니다.
파일의 리디렉션 지침을 검토하면 웹 서버가 304 개의 상태 코드를 브라우저에 통신하는 방법에 대한 문제가 표시 될 수 있습니다.
HTTP 304 수정되지 않은 상태 코드는 클라이언트 (브라우저)와 서버 간의 통신을 간소화하는 데 도움이되며 올바르게 작동 할 때 웹 성능을 최적화하고 대역폭을 저장하는 데 도움이됩니다.
그러나 외부 힘에 의해 올바르게 구성되거나 손상되지 않으면 304 상태는 오래된 컨텐츠 문제를 일으켜 사용자 경험과 검색 엔진 순위에 영향을 줄 수 있습니다.
하루가 끝나면 304 상태 코드의 부정적인 영향을 해결하거나 희망적으로 피할 수있는 여러 솔루션이 있습니다.
HTTP 304 상태 코드는 오류가 아닙니다.
행복한 호스팅!
작성자 Hostwinds / 일월 6, 2024