문제

를 만들고 싶어 etag 과 일치하는 아파치를 생산하고 있습니다.어떻게 아파치 그것을 만들의 etags?

도움이 되었습니까?

해결책

아파치 사용하여 표준 형식의 inode-filesize-mtime.주의해야 할 점은 mtime 야 시대의 시간과 패딩 으 그래서 16 자리입니다.여기에는 작업을 수행할 수 있는 방법을 PHP:

$fs = stat($file);
header("Etag: ".sprintf('"%x-%x-%s"', $fs['ino'], $fs['size'],base_convert(str_pad($fs['mtime'],16,"0"),10,16)));

다른 팁

한 가지 기억에 대한 아파치의 Etags 은 그들이 잘 놀지 않는 클러스터에 포함되어 있기 때문에 inode 수 있는 정보—그리고 아마 것입니다—따라 다를 컴퓨터에서 동일한 클러스터입니다.

당신은 동적으로 생성하는 페이지만,이것은 아마도 이해가 되지 않습니다..만약 당신이 PHP 에서,당신이 선택할 수 있습니다 아이노드 파일의 크기는 주로 스크립트,하지만 시간을 수정할 수 없는 경우에 당신에게 당신의 데이터가 변경되었습니다.지 않는 한 당신이 좋은 캐시 프로세스 또는 정적 페이지 생성,etags 도움이되지 않습니다.만약 당신이 좋은 캐시 프로세스,아이노드 파일의 크기는 아마도 무관하다.

편집:지 않는 사람들을 위해 무엇을 알 etags-그들은 단지 해야하는 값을 변경 내용인 경우는 변경된 캐싱을 위한 목적입니다.브라우저 etag 에서 웹 서버,비교하 etag 한 캐시 복사본을 다 가져오는 전체 페이지 etag 가 변경되었습니다.

대답은 위(크리스에서)작동하지만 단순화할 수 있습을 사용하는 암시적인 던지기에서 sprintf:

sprintf('"%x-%x-%x"', $s['ino'], $s['size'], str_pad($s['mtime'], 16, "0"));

%016x 이 작동하지 않기 때문에 패딩이 적용 후 변환하여 진수,오히려합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top