2011-09-15 4 views
2

서버에서 gzip으로 압축 된 콘텐츠를 보내려고합니다. 나는 파일 (get it here)을 gzipped했고, echo하려고 노력 중이다. 나는 올바른 헤더 (나는 생각한다)를 설정했다. 출력은 올바르게 시작되지만 처음 몇 줄만 출력합니다.php 에코 gzipped 파일을 반쯤 잘라 내기

<?php 
    $file = file_get_contents('kendo/js/kendo.all.js.gz'); 
    header('Content-Encoding: gzip'); 
    header('Content-Length: '.strlen($file)); # gets the correct filesize of my gzipped file 
    echo $file; 
?> 

내 방법에 문제가 있습니까?

+0

'content-type' 헤더가 있어야합니다. 'error_reporting'을'E_ALL'로 바꾸고 파일 다운로드가 실패한 후에 텍스트 편집기에서 다운로드 한 것을 열어서 PHP 오류를 찾을 수 있습니다. –

+0

은 잘못된 경보로 보입니다. 지금 같은 코드를 실행 중이며 작동하는 것 같습니다. 일부 브라우저/서버 캐싱 문제가 있었어야합니다. –

답변

1

게시 된 코드가 작동합니다 -이 다른 오류, 내가 브라우저 캐시 문제를 가정입니다이었다 - 그러나 그 자체를 해결했다.

1

콘텐츠 길이는 실제 .js 파일이 아닌 gzipped 파일의 길이입니다.

따라서 gzipped 파일의 길이에 도달하면 내용이 잘립니다. 사용을 고려 ob_gzhandler를

http://php.net/manual/en/function.ob-gzhandler.php

+0

나는 content-length가 얼마만큼의 정보가 아닌 클라이언트에게 보내지는 데이터의 길이를 가리킨다 고 생각한다. 제안 된 gzhandler 주셔서 감사합니다, 그것은 아마도보다 나은 접근 방식 일 것입니다. –

+0

예! 클라이언트에 전송되는 데이터의 길이는 실제 .js 파일의 길이가 아닌 gzip 파일의 길이입니다. 그러나 .js 파일의 내용을 에코하려고하는 것은 내가 말하고자하는 것입니다. –

+0

아니요 - gzip으로 압축 된 파일의 내용을 에코합니다. 브라우저가 해독 할 때까지 텍스트가 왜곡되어 보입니다. 그것은 지금 일하는 것, 서버/브라우저 캐시 문제가 있어야합니다. 건배 –

관련 문제