2010-02-24 1 views
0

이것은 이상한 것입니다. 라이브 서버에서 웹 사이트를 천천히 재구성하고 있습니다. 사이트의 일부 섹션이 다시 빌드되었으므로 코드는 홈 디렉토리의 하위 디렉토리 (예 :/mysite/newcode)에 있습니다.왜 gzip 압축이 작동하지 않습니까?

ob_start ("ob_gzhandler")를 사용하여 이전 사이트를 성공적으로 gzipped했습니다. 그래서, 나는 똑같은 코드를 새로운 코드에 적용했다. 그러나, 약간 이상한 이유를 위해, gzipped로서 돌아 오지 않는 것. http://www.whatsmyip.org/http_compression/http://www.gidnetwork.com/tools/gzip-test.php을 확인했습니다. gzip 처리기가 이전 코드와 새 코드 모두의 첫 번째 행 (출력 전에)에 포함되어있는 경우 왜 새 코드를 gzipping하지 않을지 이해할 수 없습니다.

은 5.1.6 아파치 2.0 를 CentOS 5

+1

어디에서'ob_start'를 호출합니까? – Gumbo

답변

0

처럼 뭔가이를 테스트 할 수 있습니다; 그리고 내용을 플러시 할 때는 flush()가 아닌 ob_flush()를 사용해야합니다. flush를 사용하면 압축이 제거됩니다.

+0

출력이 완료되면 ob_end_flush() 또는 ob_end_clean()을 사용해야합니다. – stillstanding

+0

왜 그런지 물어보십시오. – David

+0

나는 PHP 문서에 대한 의견을 잘 설명한다고 생각한다. http://php.net/manual/en/function.ob-end-flush.php 간단한 웹 페이지 요청 시나리오에서 제외 할 수 있으며 자동으로 호출됩니다. 그러나 PHP와이 함수는 다른 시나리오에서 사용될 수 있습니다. 또한 앞으로 코드를 재사용하기로 결정한 경우 수동으로 정리하지 않으면 문제가 발생할 가능성이 더 큽니다. – Liam

1

http://docs.php.net/ob_gzhandler 말한다 PHP : 실제로 압축 데이터를 전송 ob_gzhandler를하기 전에

는(), 그것은 ("GZIP"를 수락 할 브라우저를 인코딩하는 내용의 유형, "폐의"결정 또는 전혀 없음) 출력을 적절하게 반환합니다.
이것이 문제의 원인 일 수 있습니까?

편집 : 당신이위한 ob_start 사용하는 경우 ("ob_gzhandler를")를

... 문제가 어디서나 문서화 있는지 확실하지 않습니다 밖으로 찾을 수

function dbg_ob_gzhandler($buffer, $mode) { 
    error_log('dbg_ob_gzhandler invoked'); 
    $rv = ob_gzhandler($buffer, $mode); 
    if (false===$rv) { 
    error_log('client does not support compressed content'); 
    } 
    return $rv; 
} 
ob_start('dbg_ob_gzhandler'); 
+0

나는 라이브 HTTP 헤더 (파이어 폭스 3.6)와 함께 확인하고 메신저 'Accept-Encoding : gzip, deflate'를 서버에 전달했다. 그래서 반드시 압축 된 정보를 반환해야합니다. 그러나 압축 된 유일한 것은 임의의 CSS 파일입니다. – David

+0

ob_gzhandler()가 서버 측에서 호출되는지 여부를 테스트하는 것이 좋을 것입니다 (단지 간단한 테스트이기 때문에). – VolkerK