>  기사  >  백엔드 개발  >  PHP 정적 파일이 304를 반환합니다.

PHP 정적 파일이 304를 반환합니다.

WBOY
WBOY원래의
2016-08-08 09:33:031036검색

때때로 일부 정적 파일(예: 사진)이 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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:스마트 노트다음 기사:스마트 노트