현재 섹션 : 칼럼/메모

[번역문] 304 Not Modified

사용하고 있는 웹서버 에러 로그에 '304 Not Modified' 코드가 많길래...
클라이언트가 조건적인 GET 요청을 실행하고 접근이 허용되었지만, 문서가 여전히 수정되지 않았다면, 서버는 이 코드(304 Not Modified)로 응답해야 한다. 304 응답은 반드시 메시지 내용을 포함하지 말아야 하고, 그것은 항상 헤더 뒤에 따라오는 첫줄이 비어있는 상태로 끝나야 한다.

응답은 다음 헤더를 반드시 포함해야 한다.

☞ Date (section 14.18.1에 의해 생략이 요구되지 않는다면)

시계없는 서버가 다음 규칙들을 지키고, 프록시(서버)와 클라이언트가 시간이 없는 어떤 응답(참조, [RFC 2068], section 14.19)에 자신의 시간을 추가한다면, 캐시는 올바르게 작동할 것이다.

☞ ETag and/or Content-Location (헤더가 같은 요청에 200 응답으로 보내졌다면)

☞ Expires, Cache-Control, and/or Vary (같은 변수에 대하여 필드값이 이전 응답에 보내진 것과 다르다면)

조건적인 GET가 강력한 캐시 검사기(참조, section 13.3.3)를 사용한다면, 그 응답은 다른 독립 헤더를 포함하지 않아도 된다. 그렇지 않다면(예를 들어, 조건적인 GET가 부실한 검사기를 사용한다면), 그 응답은 반드시 다른 독립 헤더를 포함해야 한다. 이것은 캐시된 독립 몸체(body)과 갱신된 헤더 사이의 불일치를 방지한다.

304 응답이 현재 캐시되지 않은 개체를 가리킨다면, 캐시는 반드시 그 응답을 무시해야 하고 조건없이 요청을 반복해야 한다.

캐시가 캐시 엔트리를 수정하라는 304 응답을 수신하고 그 응답을 사용한다면, 캐시는 응답 안에 주어진 새로운 필드값을 반영하기 위하여 반드시 엔트리를 갱신해야 한다.

by 나쥬니

태그 : 304, Not Modified, 로그분석, 에러코드, 에러로그, 캐시, GET