때때로 일부 정적 파일(예: 사진)이 PHP에서 출력되는 경우 요청이 모두 200개라는 것을 알 수 있습니다. 매번 서버에서 정적 파일을 요청하는 것은 리소스 낭비입니다. 브라우저가 사진을 캐시하나요? PHP에서 304를 출력해야 합니다.
이를 위해 etag와 결합된 PHP의 HTTP_IF_MODIFIED_SINCE
을 사용할 수 있습니다. Etag에는 명확하게 정의된 형식이 없습니다. 파일 수정 시간의 md5 값을 사용할 수 있습니다.
<span>private</span> <span>function</span> _addEtag(<span>$file</span><span>) { </span><span>$last_modified_time</span> = <span>filemtime</span>(<span>$file</span><span>); </span><span>$etag</span> = <span>md5_file</span>(<span>$file</span><span>); </span><span>//</span><span> always send headers </span> <span>header</span>("Last-Modified: ".<span>gmdate</span>("D, d M Y H:i:s", <span>$last_modified_time</span>)." GMT"<span>); </span><span>header</span>("Etag: <span>$etag</span>"<span>); </span><span>//</span><span> exit if not modified</span> <span>if</span> (@<span>strtotime</span>(<span>$_SERVER</span>['HTTP_IF_MODIFIED_SINCE']) == <span>$last_modified_time</span> ||<span> @</span><span>trim</span>(<span>$_SERVER</span>['HTTP_IF_NONE_MATCH']) == <span>$etag</span><span>) { </span><span>header</span>("HTTP/1.1 304 Not Modified"<span>); </span><span>exit</span><span>; } }</span>
정적 파일(예: 사진)을 출력하기 전에 코드에서 호출할 수 있습니다.
위 내용은 PHP 정적 파일이 반환하는 304에 대한 내용을 포함하여 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.