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 を素早くインストールして展開する方法 (グリーンの無料インストール バージョン)

推薦する

Vue SPA ファースト スクリーン最適化ソリューション

目次序文最適化ソ連オンデマンドインポート1. ルーティングファイルでコンポーネントをオンデマンドでイ...

閲覧時に作成されたWebページの下部にある余分な空白スペースを削除する方法

Dreamweaver または FrontPage を使用して HTML Web ページを作成する場...

CSSスクロールバースタイル設定の実装

Webkit スクロールバー スタイルのリセット1. スクロールバーには、スクロールバー ボタンとト...

MySQL 8.0.23 メジャーアップデート (新機能)

著者: Guan Changlong は、Aikesheng の配送サービス部門の DBA です。主...

vue3を使用してAppleシステムのサイドメッセージプロンプト効果を模倣する

目次アニメーションプレビューその他のUIライブラリ始めるコンポーネントディレクトリ構造トーストおおよ...

XHTML 入門チュートリアル: リストタグの使用

リストは、類似または関連する一連の項目をリストするために使用されます。順序なしリスト(箇条書きリスト...

vue+django でファイルをダウンロードする例

目次1. 概要2. Django プロジェクト3. Vueプロジェクト1. 概要プロジェクトで、ダウ...

HTMLタグの書き方でよくある間違い

注意を払う必要があります。HTML Police がコードを調べて、意味のないタグをすべて見つけ出す...

Tencent Cloud Server Tomcat ポートにアクセスできない場合の解決策

最近、Tencent Cloudを使用してサーバーを設定しました。使用中に、tomcatポートにアク...

MySQL インデックスの設計と最適化の方法

目次インデックスとは何ですか?左端のプレフィックス一致の原則key_lenの計算方法インデックスの最...

MySQL全文インデックスの原理と欠点

MySQL フルテキスト インデックスは、特定のテーブルの特定の列に表示されるすべての単語のリストを...

Vue で className として空の文字列を使用することはなぜ推奨されないのですか?

目次空の文字列 '' と null を比較するケース1: 空の文字列を使用する &#...

mysql ERROR 1045 (28000) 問題の解決方法

私はmysql ERROR 1045に遭遇し、この問題に長い時間を費やしました。私はそれを自分で書き...

CSS トランジションを使用した円形ホバー効果のサンプルコード

この記事では ソースコードのオンラインプレビューとダウンロード今日のチュートリアルでは、円のホバー効...

HTML で入力ボックスに純粋な数字のみを入力するように制限する方法

inputボックスを純粋な数字のみに制限する1、onkeyup = "value=valu...