나는 이상한 일이 생겼을 때 ETags, IF_NONE_MATCH 등을 사용하여 PHP로 놀고있었습니다. 아래 코드를 작성하여 IF_NONE_MATCH를 확인합니다. ETag와 일치하면 304 응답 헤더를 보냅니다. 그렇지 않은 경우 다른 헤더를 보내 브라우저에 페이지 캐시와 ETag를 캐시하도록 지시합니다. 나는 한 번 페이지를 얻고 나서 항상 304를 얻으려고했다. 그 대신 페이지를 한 번 가져온 다음 304, 다음 페이지를 304 등으로 처리합니다. Chrome의 헤더보기를 확인할 때 304 코드에서 ETag를 다시 설정하지 않으면 ' 다음 번에 요청 헤더에서 다시 페이지를 보냅니다. 정상적인 동작입니까, 아니면 그냥 Chrome입니까? 내가 뭔가 잘못하고 있는거야? 나는 문제가 헤더 호출로 생각304 Not Modified 헤더를 사용하여 ETag를 다시 보내야합니까?
<?php
$etag = '89453fo245tyu5o423ty5349gu0p34';
if (isset($_SERVER['HTTP_IF_NONE_MATCH']) &&
$_SERVER['HTTP_IF_NONE_MATCH'] == $etag) {
header('', true, 304);
} else {
header('Expires: Fri, 06 Apr 2013 23:59:59 03:00 GMT');
header('Pragma: cache');
header('Cache-Control: public, must-revalidate, max-age=0');
header('ETag: ' . $etag);
echo 'new page';
}
이 헤더 호출도 시도해 본 결과 같은 결과였습니다. 하지만 당신이 Refresh를 치는 것이 옳은 것 같아요. 감사! – user884248