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 が中国語を入力および表示できない問題の解決方法

推薦する

CSSはBEM命名規則の実践を使用する

クラスを見るとき、どのような情報を得たいですか?このクラスはどこで使用され、その機能は何ですか?この...

高同時実行シナリオにおける nginx 最適化の詳細な説明

日常の運用・保守作業では、nginx サービスが頻繁に使用され、nginx の高同時実行性によって生...

Vue3 における親コンポーネントと子コンポーネント間の値の転送の詳細な説明

vue3 が誕生してからかなり時間が経ち、筆者も最近になって vue3 を学び始めました。 vue2...

MySQLを5.7にアップグレードすると、WordPressはデータをインポートするときにエラー1067を報告します

最近MySQLを5.7にアップグレードしましたが、WordPressでデータのインポート時にエラーが...

コードレイン効果を実現するJavaScriptキャンバス

この記事では、コードレイン効果を実現するためのキャンバスの具体的なコードを参考までに共有します。具体...

ウェブデザインのグラフィック構成と組版機能の紹介

すべてには基礎が必要です。家を建てるには基礎が必要です。方程式を解くには、まず九九を覚える必要があり...

JavaScript における Arguments オブジェクトの使用に関する詳細な説明

目次序文議論の基本概念議論の役割実パラメータと仮パラメータの数を取得する実際のパラメータ値を変更する...

2列の水平タイムラインを実装するためのVueサンプルコード

目次1.コンポーネントtimelineH.vueを実装する2. コンポーネントの呼び出しこの記事では...

MySQL5.6.31 winx64.zip インストールと設定のチュートリアル

#1. ダウンロード # #2. ローカルに解凍し、必要な構成のmy*.iniを変更します。 #3....

MySQL テーブルタイプ ストレージエンジンの選択

目次1. 現在のデータベース支出のストレージエンジンを表示する方法1:方法2: 2. ENGINE=...

親要素に対する CSS 子要素の配置の実装

解決親要素に position:relative を追加します。子要素に position:abso...

インライン要素とブロック要素とは何ですか?

1. インライン要素はコンテンツの幅のみを占めますが、ブロック要素はコンテンツの量に関係なく行全体を...

MySQLバッチは特定のフィールドのスペースを削除します

Mysql で特定のフィールドからスペースを一括削除する方法はありますか?文字列の前後のスペースだけ...

React-Native環境のセットアップと基本的な紹介

環境の準備1. 環境構築React Native 中国語ウェブサイト2. 開発ツール フロントエンド...

JavaScript配列の一般的なメソッドの例のまとめ

目次一般的な配列メソッドconcat() メソッドjoin() メソッドpop() メソッドpush...