phpモジュールにbrotli入れてbrコンテンツを使う!!
ブラウザーのコンテンツの圧縮でよく聞いているのが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
対応状況
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;
Author And Source
この問題について(phpモジュールにbrotli入れてbrコンテンツを使う!!), 我々は、より多くの情報をここで見つけました https://qiita.com/FattyRabbit/items/58e3f2617bcda66eedaf著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .