
キーポイント
生産モードは、開発モードでのロギングと例外スタックトレースタスクを排除するため、- 生産モードに切り替えると、エクスプレスアプリケーションのパフォーマンスが大幅に向上する可能性があります。
Express 4.xでGZIP圧縮を有効にすると、HTTP負荷を減らし、パフォーマンスを向上させることができます。これは、圧縮モジュールをインストールし、最初のミドルウェア関数として使用することで実行できます。 -
不要なミドルウェアの削除、よりシンプルなテンプレートエンジンを使用し、共通変数を効果的にキャッシュすることで、エクスプレスアプリケーションのパフォーマンスをさらに最適化できます。 Gulpなどのビルドツールを使用して、HTMLテンプレート、CSS、およびJavaScriptファイルを圧縮およびマージできます。また、メモリ関連のパフォーマンスの問題を回避するために、セッション変数を制限する必要があります。
-
node.jsはWeb開発を完全に変更し、Expressフレームワークは消えない貢献をしました。 Expressは最速または最も高度なサーバーオプションではない場合がありますが、ほぼ間違いなく最も広く使用されており、1か月あたり300万件以上のダウンロードがあります。何もしない場合、node.jsとExpressも非常に迅速に実行されます。ただし、Express 4.xをより速く実行する簡単な方法がいくつかあります...
生産モードに切り替えます-
Expressは複数のモードで実行できます。デフォルトでは、例外スタックトレースやその他のロギングタスクを提供する開発モードであると想定しています。コンソールにメッセージを記録するデバッグモードもあります。たとえば、
ライブサーバーでは、生産モードに切り替えることでパフォーマンスを大幅に向上させることができます。これは、node_env環境変数を生産に設定することで実行できます。 Expressアプリケーションを開始する前に、Windowsの現在のセッションで設定できます。
<code>DEBUG=express:* node ./app.js</code>
ログイン後にコピー
ログイン後にコピー
またはmac/linux:
<code>set NODE_ENV=production</code>
ログイン後にコピー
ログイン後にコピー
Linuxユーザーは、Startupのラインでnode_envを設定することもできます:
<code>export NODE_ENV=production</code>
ログイン後にコピー
ログイン後にコピー
理想的には、
または対応するスタートアップスクリプトに
<code>NODE_ENV=production node ./app.js</code>
ログイン後にコピー
ログイン後にコピー
を追加して、環境を構成する必要があります。
<code>export NODE_ENV=production</code>
~/.bash_profile
gzip
- を有効にします
Express 4.Xは、ミドルウェアで強化できる利用可能な機能の最小量を提供します。それほど明白ではない機能がGZIP圧縮です。これにより、HTTP負荷が減少し、ブラウザが受信時にスケーリングできるようになります。 GZIPを追加するには、NPMを使用して圧縮モジュールをインストールします。
(セットアップによっては、Mac/LinuxでSudoを使用する必要がある場合があります。この問題を解決する方法はたくさんあります。)メインアプリケーションの起動ファイルには、圧縮モジュールを含めます。
次に、最初のミドルウェア関数として(他のExpress:使用方法の前)としてインストールします:
<code>npm install compression --save</code>
ログイン後にコピー
ログイン後にコピー
<code>DEBUG=express:* node ./app.js</code>
ログイン後にコピー
ログイン後にコピー
-
不要なミドルウェアを削除
Expressジェネレーターまたは同様の手順を使用して事前に構築されたアプリケーションを生成した場合、使用していないミドルウェアモジュールを削除します。たとえば、Cookieを使用していない場合は、Cookie-Parserモジュールを削除するか、Req.CookiesとRes.Cookiesを使用してより簡単な代替手段を実装できます。生産モードでは、デバッグ出力など、一部のプロセスを削除できます。
<code>set NODE_ENV=production</code>
ログイン後にコピー
ログイン後にコピー
言い換えれば、サーブファビコンを維持することが最善です。ブラウザは頻繁にfavicon.icoファイルを要求し、モジュールはキャッシングを改善できます。
- よりシンプルなテンプレートエンジンの使用
Jadeは、多くのエクスプレスインストールのデフォルトのテンプレートエンジンであり、それは良い選択です。ただし、独自のHTMLを書いて喜んで、基本的な補間と評価のみが必要な場合は、Express-Dot-Engineモジュールを使用してExpress Middlewareとして追加できるDOTなどの軽量の代替品を使用することを検討してください。または、次のような単純な応答を得るために、テンプレートエンジンをバイパスできます。
使用しているテンプレートエンジンに関係なく、常にキャッシュを表示することを確認してください。
<code>export NODE_ENV=production</code>
ログイン後にコピー
ログイン後にコピー
キャッシュを覚えておいてください!
<code>NODE_ENV=production node ./app.js</code>
ログイン後にコピー
ログイン後にコピー
- ほとんどのサーバーベースのアプリケーションとは異なり、node.jsアプリケーションは永続的に実行されます。そのため、データベース接続オブジェクトのような一般的な変数を一度設定し、各ユーザーの各リクエスト中にそれらを再利用できます。この概念は、必要に応じて拡張できます。一般的に言えば、キャッシュできる一般的なアイテムがあればあるほど、パフォーマンスが向上します。たとえば、ExpressベースのCMSアプリケーションがホームページの最後の5つの投稿へのリンクを示しているとします。リストは変数に生成および保存でき、新しい記事が公開されたときにのみ更新されます。
余分なクイックヒント
もっと欲しい? …
nginxを使用して静的コンテンツを提供し、node.jsとexpressの負荷を減らすことを検討してください。
Gulpなどのビルドツールを使用して、HTMLテンプレート、CSS、およびJavaScriptファイルを圧縮およびマージします。
セッション変数の使用を制限します。ユーザーセッションデータは通常、メモリに保存され、使用量が増加するにつれてパフォーマンスの問題につながる可能性があります。 IDのみを使用して、リクエスト中にデータベースからユーザー情報を取得することを検討してください。 -
httpソケットの最大数を5つより高い数値に増やします。たとえば、-
-
- 可能な場合は、順次ではなく操作のブロックシーケンスを呼び出します。
アプリケーションの初期化を除くすべてで同期ブロッキングコールを使用しないでください。
<code>npm install compression --save</code>
ログイン後にコピー
ログイン後にコピー
は、1つのユーザーブロックのコードが互いのユーザーに対して実行されているため、コードが実行されることに常に注意してください。 -
- node.jsまたはexpressの他のパフォーマンスのヒントはありますか?コメントで聞いてみたいです。
- (node.jsパフォーマンスのチューニングに関するFAQの章をここに追加する必要があります。
以上がNode.js Expressの5つの簡単なパフォーマンス微調整の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。