Nginx で Brotli 圧縮アルゴリズムを有効にする方法の例

Nginx で Brotli 圧縮アルゴリズムを有効にする方法の例

Brotli は、Zopfli よりも 20 ~ 26% 高い圧縮率を実現できる新しいデータ形式です。

Brotli 圧縮アルゴリズムとは何ですか?

Brotli はもともと、Web フォントのオフライン圧縮用に 2015 年にリリースされました。 Google のソフトウェア エンジニアは、2015 年 9 月に、特に HTTP 圧縮に重点を置いた一般的なロスレス データ圧縮を含む Brotli の拡張バージョンをリリースしました。エンコーダーは圧縮率を向上させるために部分的に書き直され、エンコーダーとデコーダーの両方が高速化され、ストリーミング API が改良されて圧縮品質レベルが追加されました。新しいバージョンでは、プラットフォーム間でのパフォーマンスの向上と、デコードに必要なメモリの削減も実現されています。

一般的な汎用圧縮アルゴリズムとは異なり、Brotli は事前定義された 120 キロバイトの辞書を使用します。辞書には、テキストと HTML ドキュメントの大規模なコーパスから抽出された 13,000 を超える一般的な単語、フレーズ、およびその他の部分文字列が含まれています。事前定義されたアルゴリズムにより、小さいファイルの圧縮密度を向上させることができます。

テキスト ファイルを圧縮する際に deflate の代わりに brotli を使用すると、圧縮密度が通常 20% 向上しますが、圧縮および解凍の速度はほぼ同じままです。 Brotli を使用したスト​​リーミング圧縮用に、コンテンツ エンコーディング タイプ「br」が提案されています。

インストール

1. brotliをダウンロードする

git クローン https://github.com/google/ngx_brotli
cd ngx_brotli && git サブモジュール更新 --init

2. コンパイル

元のコンパイル設定の後に –add-module=/opt/nginx/ngx_brotli を追加します。

例えば

次のようにコードをコピーします
./configure --prefix=/usr/local/nginx --user=www --group=www --with-pcre=/opt/nginx/pcre-8.41 --with-http_ssl_module --with-zlib=/opt/nginx/zlib-1.2.11 --with-openssl=/opt/nginx/openssl-1.0.2n --add-module=/opt/nginx/ngx_brotli --with-http_v2_module

設定、httpセクションに追加

http {
  mime.types を含めます。
  デフォルトタイプ アプリケーション/オクテットストリーム;
  ファイル送信オン;
  tcp_nopush オン;

  キープアライブタイムアウト65;
  #Brotli 圧縮
  ブロトリオン;
  brotli_comp_レベル 6;
  brotli_types テキスト/プレーン テキスト/css アプリケーション/json アプリケーション/x-javascript テキスト/xml アプリケーション/xml アプリケーション/xml+rss テキスト/javascript アプリケーション/javascript image/svg+xml;
  …

再起動してページを更新し、ヘッダーを表示すると、

受け入れエンコーディング:gzip、deflate、br

図に示すように

これは、brotli 圧縮が有効になっていることを意味します。

設定手順

指導の紹介

ngx_brotli は次のディレクティブを定義します。

brotli では、応答データの動的圧縮を許可するかどうかを指定します。オプションの値は on と off で、デフォルト値は off です。例は以下のとおりです。

ブロトリオン;

brotli_types、動的圧縮が有効な場合に圧縮が許可される MIME タイプ、デフォルト値は text/html です。例は以下のとおりです。

brotli_types テキスト/プレーン テキスト/css テキスト/xml アプリケーション/xml アプリケーション/json テキスト/javascript アプリケーション/javascript アプリケーション/x-javascript;

brotli_static: .br で終わる前処理済みの圧縮ファイルの検索を許可するかどうか。オプションの値は on、off、always です。デフォルト値は off です。例は以下のとおりです。

brotli_static オフ;

brotli_comp_level、圧縮レベル、オプションの値の範囲は 0 ~ 11、デフォルト値は 6 です。例は以下のとおりです。

ブロトリ_comp_レベル11;

brotli_buffers、応答データを圧縮するときに使用するバッファの数とサイズ。例は以下のとおりです。

brotli_buffers 16 8k;

brotli_window は brotli が使用するウィンドウ値で、デフォルト値は 512k です。例は以下のとおりです。

brotli_window 512k;

brotli_min_length、応答データの最小長。長さがこの値より短い場合、圧縮操作を実行するために brotli アルゴリズムは使用されません。 brotli アルゴリズムは、Content-Length を使用して応答データの長さを決定します。例は以下のとおりです。

ブロトリの最小長さ 20;

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Nginx で Brotli アルゴリズム圧縮を有効にする例
  • NginxはGzipアルゴリズムを使用してメッセージを圧縮します
  • Nginxポーリングアルゴリズムの基本的な実装方法の詳細な説明
  • Nginx 7層負荷分散のいくつかのスケジューリングアルゴリズムの簡単な理解
  • Nginx の負荷分散アルゴリズムとフェイルオーバー分析
  • C# は Nginx のスムーズな重み付けポーリング アルゴリズムを実装します
  • nginxの4つのスケジューリングアルゴリズムと高度な機能の詳細な分析
  • Brotli圧縮アルゴリズムを有効にするNginxの実装プロセスの詳細な説明

<<:  JSベースの手持ち連射機能+テキスト揺れ特殊効果コードの簡単実装

>>:  Windows システムに MySQL を素早くインストールして展開する方法 (グリーンの無料インストール バージョン)

推薦する

Nginx プロキシを使用してインターネットを閲覧する方法

私は通常、Tomcatや他のアプリケーションのリバースプロキシとしてnginxを使用しています。実際...

Vueのref属性の詳細な説明

要約するこの記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS....

Alibaba CloudがCloud Shieldから無料のSSL証明書(https)を申請

プロジェクトでは https サービスを使用する必要があるため、Alibaba Cloud では無料...

Linux に起動方法を追加する (サービス/スクリプト)

システムの起動時に読み込む必要がある設定ファイル/etc/profile、/root/.bash_p...

MySQL 上級学習ノート (パート 3): MySQL 論理アーキテクチャの紹介、MySQL ストレージ エンジンの詳細な説明

MySQL 論理アーキテクチャの概要他のデータベースと比較すると、MySQL は、そのアーキテクチャ...

Vueはキャンバスの手書き入力を使用して中国語を認識します

効果画像: 序文:最近、屋外の大画面プロジェクトに取り組んでいました。システムの入力方法は使いにくか...

CSS で div にスクロールを追加し、スクロール バーを非表示にする

CSS は div にスクロールを追加し、スクロール バーを非表示にします。具体的なコードは次のとお...

階層化されたピラミッドを実現するための HTML+CSS の例

この記事では主に、HTML+CSS で階層化ピラミッドを実装する例を紹介し、皆さんと共有します。詳細...

jQueryブリージングカルーセルの制作原理を詳しく解説

この記事では、jQueryブリージングカルーセル制作原理の具体的なプロセスを参考までに紹介します。具...

Nginx の高同時実行最適化の実践

1. チューニングの必要性​ 私は、どのように書けばいいのか本当に分からないので、共有するために最適...

Vue命令の実装原理の分析

目次1. 基本的な使い方2. 指示の動作原理2.1. 初期化2.2 テンプレートのコンパイル2.3....

MySQLカスケードレプリケーションの実装方法の例

いわゆるカスケード レプリケーションでは、マスター サーバーが 1 つのスレーブ サーバーにのみデー...

IDEA を MYSQL データベースに接続するための構成時に失敗する問題の解決策

この記事では、主に、IDEA を MYSQL データベースに接続するための構成時に失敗する問題の解決...

Mysql 5.7.17 をインストールした後、MySQL にログインするチュートリアル

mysql-5.7.17 のインストールについては記事の下部で紹介されているので、参考にしてください...

MySQL ファントムリードとその排除方法の詳細な説明

目次トランザクション分離レベルファントムリーディングとは何ですか?ファントムリードを排除する方法要約...