Nginx はリクエスト接続を統合し、ウェブサイトのアクセス例を高速化します

Nginx はリクエスト接続を統合し、ウェブサイトのアクセス例を高速化します

序文

世界最高の Web サーバーの 1 つである Nginx の利点は明らかです。 Nginx がリクエスト接続をマージする方法について説明します。

クイックファクト

Web を閲覧する際、閲覧速度に影響を与える重要な要素は同時ブラウザの数です。簡単に言えば、同時実行タスク数とは、Web ページを閲覧するときに同時に実行されるタスクの数です。

もちろん、ブラウザの同時リクエスト制限は同じドメイン名に対してです。 同じドメイン名での同時リクエスト数には一定の制限があります。 制限を超えたリクエストはブロックされます。

まず、各ブラウザの同時接続数を見てみましょう。

ブラウザがこの決定を下す際に考慮すべき事項を列挙する

  • TCP プロトコルの制限により、PC の外部接続に使用できるポートは 65536 個のみであり、オペレーティング システムも、オペレーティング システムの TCPIP プロトコル スタック リソースがすぐに使い果たされるのを防ぐために、半オープン接続の数を制限しています。したがって、ブラウザーは TCP 接続をあまり多く発行すべきではありません。代わりに、使い果たされた TCP 接続を再利用するか、TCP 接続を単純に再確立する必要があります。
  • ブロッキング ソケット モデルを使用して接続を確立する場合、複数の接続を同時に発行すると、ブラウザーはさらに複数のスレッドを開く必要があり、スレッドは軽量リソースと見なされないことがあります。結局のところ、コンテキスト スイッチのコストは小さくありません。
  • これは、サーバーを保護するための良心的なクライアントとして機能するブラウザです。イーサネットの衝突検出メカニズムと同様に、クライアントはパブリック リソースを使用するときに待機期間を独自に決定する必要があります。 2 つ以上のクライアントがパブリック リソースを使用する場合、より強力な悪意のあるクライアントによって、より弱いクライアントがパブリック リソースにまったくアクセスできなくなる可能性があります。 Xunlei は以前、良心的なクライアントではないという批判を受けました。HTTP プロトコル クライアントとして、サーバーへの負荷を考慮しておらず、BT クライアントとして、アップロード量をフィードバックする義務を考慮していませんでした。

タオバオテンギン

いくつかのウェブサイトを訪問すると、コード内のいくつかの js ファイルと css ファイルが 1 つのリクエストを通じて取得されていることがわかります。上記の知識では、同時ブラウザ リクエストの数には制限があることがわかっていますが、複数のレコードを 1 つのリクエストにマージすると、応答速度が加速される可能性があります。

Taobao が使用する tengine は、2011 年末からオープンソースとなっている nginx をベースにした Web サーバーです。オープンソース モジュール nginx-http-concat は、複数のファイルを 1 つの応答メッセージにマージできます。

インストール

サードパーティモジュール nginx-http-concat を初めてインストールする

http://tengine.taobao.org/download/tengine-2.2.0.tar.gz をダウンロードしてください
wget https://github.com/alibaba/nginx-http-concat/archive/master.zip -O nginx-http-concat-master.zip
nginx-http-concat-master.zip を解凍します。
tar -xzvf テンジン-2.2.0.tar.gz
cd テンジン-2.2.0

構成、コンパイル、インストール

 ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=../nginx-http-concat-master
 作る
 インストールする

Nginx がすでにインストールされている場合は、サードパーティのプラグインを構成するだけです。 Nginx -V で、Nginx のバージョンを確認します。利用できない場合は、対応するバージョンをダウンロードします。

コードを実行するだけです。

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=../nginx-http-concat-master
作る

コンパイルが成功した後

#コピーする前にnginx実行ファイルをバックアップしてください cp /objs/nginx /usr/local/nginx/sbin/nginx

Nginx を終了して再起動します。

構成

場所セクションに次の構成を追加します。

場所 /static/css/ {
  連結する;
  連結最大ファイル数 20;
  concat_unique オフ;
  concat_types テキスト/css アプリケーション/javascript;
}

マージ方法

http://static.52itstyle.com/static/css/??index.css,common.css?v=20171111

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

以下もご興味があるかもしれません:
  • nginxのパフォーマンスを高速化: gzipとキャッシュを有効にする
  • CDN アクセラレーションを使用する際にユーザーの IP を取得するように Nginx を構成する方法の詳細な説明
  • WIN での Nginx キャッシュ アクセラレーション設定方法
  • nginx-http-concat モジュールを使用して、nginx で静的リソース ファイルをマージします。
  • Nginx 設定ファイルの問題により開けない不明なディレクティブの解決方法

<<:  Vue Element UIの使用時に遭遇した問題をまとめる

>>:  Windows システムの MySQL が中国語を入力および表示できない問題の解決方法

推薦する

DockerはGitを使用してJenkinsのリリースとテストプロジェクトの詳細なプロセスを実装します

目次1. Dockerをインストールする2. カスタムネットワークアドレスを作成する3. Docke...

RGBカラーテーブルコレクション

RGBカラーテーブル色英語名RGB 16色雪255 250 250 #FFFAFAゴーストホワイト2...

MySQLパーティションテーブルは月別に分類されています

目次テーブルを作成するデータベース ファイルを表示します。入れるクエリ消去補足:Mysqlは月テーブ...

Windows で MySQL インストーラーを使用して MySQL サービスをインストールするチュートリアル図

MYSQL は、MYSQL サービスやその他のコンポーネントをインストールするためのインストーラ方式...

MySQLデータベースとOracleデータベース間のバックアップをインポートする

OracleデータベースからエクスポートされたデータをMySqlデータベースにインポートします。 1...

MySQL マスター スレーブ データベースが同期されない問題を解決する 2 つの方法

目次MySQL マスター スレーブ データベースが同期されない問題を解決する 2 つの方法1. 非同...

NavicatがMySQLに接続すると、10060、1045エラーとmy.iniの場所が報告されます。

Navicat は、データベースに接続するときにエラー 10060 および 1045 を報告します...

Alpine イメージに Ansible サービスを追加する方法

apk add ansible を使用して、alpine イメージに ansible サービスを追加...

HTML5で見逃せないAPIやヒントのまとめ

これまでのブログ投稿では、HTML 5 ではあまり使われていないが注目すべき API やヒントに焦点...

Windows で Mysql を起動したときに 1067 が表示される場合の解決策

数日前に仕事を始めて、Mysql をインストールしたところ、開くことができました。今日、会社に行った...

JavaScript で Priority Queue を実装する

目次1. 優先キューの紹介2. 優先キューのカプセル化1. 優先キューの紹介通常のキューに要素が挿入...

Hyper-v仮想マシンを使用してCentos7をインストールする

目次導入準備するシステムイメージをダウンロードHyper-Vを有効にする新しい仮想ネットワークスイッ...

Navicat PremiumはMySQLデータベースを操作します(SQL文を実行します)

1. Navicatの紹介1. Navicat とは何ですか? Navicat は強力な MySQ...

Vue で ToDo アプリケーションを実装する例

背景まず最初に、私はフロントエンド開発の専門家ではないことを述べておきたいと思います。私の以前のコン...

複雑なウェブサイトのナビゲーションを簡素化

<br />ナビゲーション設計は構造設計における主要なタスクの 1 つです。ソフトウェア...