1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

phpモジュールにbrotli入れてbrコンテンツを使う!!

Last updated at Posted at 2020-10-25

ブラウザーのコンテンツの圧縮でよく聞いているのがgzipだと思います。今回UberEatsで使用しようとしたAPIがJson形式だけど、拡張子が「.json.br」でbrotliで圧縮されてそれをそのままだと利用できなかったので、それを解決する方法をまとめた内容です。

Brotliとは

簡単に調べると「https://hackers-high.com/linux/brotli-installation-effect/」でこんな感じで説明されています。

brotliは2015年に発表され、その後Googleによってアップデートされたデータ圧縮アルゴリズムです。

httpにおける圧縮アルゴリズムとして使われることを主な目的としています。従来から広く使われているgzipと比較して、圧縮率が向上していながら、圧縮/伸長速度は同程度を維持しています。ただし、SSL/TLSが必須となっています。どの程度圧縮率が向上しているのかは、Brotilの効果を参照。

圧縮に辞書を併用しているのが特徴で、辞書には"<div/>"、"before"、"普通"などの頻繁に使われるHTMLタグや各言語の表現が約1万語入っており、圧縮をより効率的にしています。

ブラウザーの開発ツール等で見える以下のHeader情報brのことです。

accept-encoding: gzip, deflate, br

対応状況

brotli

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のメソードについて:https://github.com/kjdev/php-ext-brotli

$compressed = brotli_compress('Compresstest');

$uncompressed = brotli_uncompress($compressed);

echo $uncompressed;
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?