php 모듈에 brotli 넣어 br 콘텐츠를 사용! !

브라우저의 콘텐츠 압축으로 자주 듣는 것이 gzip이라고 생각합니다. 이번에 UberEats에서 사용하려고 한 API가 Json 형식이지만, 확장자가 ".json.br"로 brotli로 압축되어 그것을 그대로 아직 사용할 수 없었기 때문에 그것을 해결하는 방법을 정리한 내용입니다.

Brotli란?



간단히 조사하면 「 htps : //는 c rs-hi gh. 코 m / ぃ ん x / b 로 t ぃ い ん s ぁ 치 온 에후 ぇ ct / 」로 이런 느낌으로 설명되고 있습니다.

Brotli는 2015년에 발표된 이후 Google이 업데이트한 데이터 압축 알고리즘입니다.

http에 있어서의 압축 알고리즘으로서 사용되는 것을 주된 목적으로 하고 있습니다. 종래부터 널리 사용되고 있는 gzip에 비해, 압축률이 향상하면서, 압축/신장 속도는 같은 정도를 유지하고 있습니다. 그러나 SSL/TLS가 필수입니다. 어느 정도 압축률이 향상되고 있는지는 Brotil의 효과를 참조.

압축에 사전을 병용하고 있는 것이 특징으로, 사전에는 "
", "before", "보통"등의 자주 사용되는 HTML 태그나 각 언어의 표현이 약 1만어 들어가 있어 압축을 보다 효율적으로 하고 있습니다.

브라우저의 개발 툴 등으로 보이는 이하의 Header 정보br입니다.
accept-encoding: gzip, deflate, br

대응 상황





Fedora / CentOS / RHEL



Remi's RPM repository 을 이용하여 "php-brotli"의 이름으로 설치가 가능합니다.
centosの例
# yum install -y php-brotli

기타



Remi's RPM repository 를 사용할 수 없는 경우는 build 하고 인스톨 합니다.
# git clone --recursive --depth=1 https://github.com/kjdev/php-ext-brotli.git
# cd php-ext-brotli
# phpize
# ./configure
# make
# make install

설정



php.ini 및 모듈의 디렉토리에 설정 파일을 만듭니다.
extension=brotli.so

Docker 이미지의 php-fpm



설치할 때 설치하기 전에 "apt-get update"가 필요합니다.
FROM php:7.1-fpm
...
RUN apt-get update && apt-get install -y git && \
    git clone --recursive --depth=1 https://github.com/kjdev/php-ext-brotli.git && \
    cd php-ext-brotli && \
    phpize && \
    ./configure && \
    make && \
    make install && \
    printf '%s\n' 'extension=brotli.so'  >> /usr/local/etc/php/conf.d/brotli.ini && \
    rm -rf php-ext-brotli
...

확인



PHP의 방법에 대해 : htps : // 기주 b. 이 m / kj에서 v / php - x tb 로 t
$compressed = brotli_compress('Compresstest');

$uncompressed = brotli_uncompress($compressed);

echo $uncompressed;

좋은 웹페이지 즐겨찾기