2013-09-27 2 views
11

내 ajax 응답은 실제로 900kb입니다. 그래서 성능 향상을 위해 gzip을 사용해야합니다.gzip 콘텐츠를 PHP 응답으로 보내려면

누구든지 내 PHP에서 gziped 콘텐츠를 얻을 도와주세요 수 있습니다.

미리 감사드립니다.

+0

이 http://php.net/manual/en/function.gzcompress.php 시도 – Vishnu

답변

17

이있는 페이지 던져 아무 것도하고 출력하기 전에 :

ob_start("ob_gzhandler"); 

그런 다음 콘텐츠 이후로 그것을 따르

ob_end_flush(); 

그리고 콘텐츠는 gzip으로 압축됩니다

+0

당신에게 정말 고마워요 . 그것은 내 데이터 크기의 1/3을 줄였습니다. – harishkumar329

+2

ra_htial에서 언급했듯이 php.net docs가 추천하는 것처럼'ob_gzhandler'보다는'zlib.output_compression'을 사용하는 것이 더 좋으며, 출력 끝에서'ob_end_flush();'를 사용하는 것을 잊지 마십시오. –

+0

zlib도 작동하지만 브라우저가 지원하는 한 해당 사이트의 모든 요청을 압축합니다. 대부분의 경우 이것이 이상적 일지 모르지만 이것은 Ajax 응답 크기를 처리하기위한 질문이었습니다. – Chausser

10

옵션 1 :

configu http://www.php.net/manual/en/zlib.configuration.php#ini.zlib.output-compression

옵션 2 :

사용 : ob_gzhandler

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

참고 :

당신의 php.ini

문서에서 zlib.output_compression 재 0

900Kb이 너무 많아서 아약스 응답을 얻지 못합니다. 당신이 ob_gzhandler()을 사용하기 전에 php.ini 설정 파일을 업데이트 할 수없는 경우

+0

+1에서 900Kb까지는 AJAX에서 너무 큽니다. 제대로 작동하지만 배달 메커니즘을 재고해야합니다. –

+0

예, 이제 300KB로 줄어 들었습니다. 그리고 저는 다시 Chausser의 아이디어를 사용하여 93.7kb의 크기를 얻었습니다. 이제는 잘 작동합니다. – harishkumar329

1

당신도이 시도 할 수 :

ini_set('zlib.output_compression', 1); 
+0

이것은 가장 좋은 답변입니다. zlib 확장이 설치되어 있는지 확인하지 않아도됩니다. – alexg

관련 문제