개발 꿀팁/PHP

php json 데이터는 gzip으로 압축하여 출력한다

Jammie 2022. 8. 23. 13:50
반응형

1.압축사용과 그렇지 않은 HTTP 출력 비교

2.gzip을 켭니다
아파치를 이용하다 mod_deflate module 열기gzip
여는 방법:

sudo a2enmod deflate
sudo /etc/init.d/apache2 restart

닫기 방법:

sudo a2dismod deflate
sudo /etc/init.d/apache2 restart

3.gzip 압축출력이 필요한 타입 설정
json의 출력 유형은 applicat입니다.ion/json, 그래서 이렇게 설정할 수 있습니다.
httpd.conf 의 <Direct > 에서tory></Directory>에 추가하기

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE application/json
</IfModule>
<?php
$data = array(
    array('name'=>'one','value'=>1),
    array('name'=>'two','value'=>2),
    array('name'=>'three','value'=>3),
    array('name'=>'four','value'=>4),
    array('name'=>'five','value'=>5),
    array('name'=>'six','value'=>6),
    array('name'=>'seven','value'=>7),
    array('name'=>'eight','value'=>8),
    array('name'=>'nine','value'=>9),
    array('name'=>'ten','value'=>10),
);

header('content-type:application/json');
echo json_encode($data);
?>

gzip 설정 전 출력:

gzip 설정 후 출력:

4.단일 json은 gzip을 사용하여 출력을 압축합니다.
AddOutputFilterBy 설정Type DEFLATE application/json 후 모든 json 형식의 데이터 출력은 gzip 압축 출력을 사용합니다.
만약 json이 gzip 압축을 사용하기를 원한다면출력, 기타 불필요, ob_start(;) 방법을 사용하여 구현할 수 있다.

일단 AddOutputFil을 설정할 필요가 없습니다terByType, 그리고 코드 맨 처음 위치에 ob_start('ob_gzhandler')를 추가합니다.

<?php
ob_start('ob_gzhandler');

$data = array(
    array('name'=>'one','value'=>1),
    array('name'=>'two','value'=>2),
    array('name'=>'three','value'=>3),
    array('name'=>'four','value'=>4),
    array('name'=>'five','value'=>5),
    array('name'=>'six','value'=>6),
    array('name'=>'seven','value'=>7),
    array('name'=>'eight','value'=>8),
    array('name'=>'nine','value'=>9),
    array('name'=>'ten','value'=>10),
);

header('content-type:application/json');
echo json_encode($data);
?>
반응형