httpclientインスタンスライフサイクル:単一の例モードまたはすべてのリクエストがビルドされていますか?
Web APIクライアントアプリケーションでは、HTTPCLIENTオブジェクトの最高のライフサイクルは議論の余地があります。各コールの新しい例を作成することを提唱する人もいれば、1つの例を複数回呼び出して再利用することを提唱する人もいます。
新しいhttpclient
を作成します
各リクエストに新しいhttpclientを作成して、次のような費用を導入します。
資格情報とCookie管理:
HTTPCLIENTHANDLERメンテナンス資格情報とCookie、これらの資格情報とCookieは、それらを再利用するように設計されています。リクエストごとにこれらの値を個別にリセットする効率は低いです。
デフォルトのリクエストヘッダー:新しいHTTPCLIENTインスタンス(Accept Headなど)でデフォルトリクエストヘッダー(Acceptヘッダーなど)を構成します。 -
httpmessagehandlers:ログレコード、スロー、またはその他の水平派にhttpmessagehandlersを使用する場合、新しいhttpclientごとにそれらを再構成する必要があります。
- TCP/IP接続管理:処分HTTPCLIENTは、関連するHTTPCLIENTHANDLERを閉じて、TCP/IP接続を強制します。これには、各リクエストの再確立が必要であり、特にインターネットまたはHTTPS接続に対して、潜在的なパフォーマンス損失につながります。
- 単一のhttpclient を再利用します
複数の呼び出しと同じhttpClientインスタンスを再利用すると、これらの費用を最小限に抑え、他の利点を提供できます。
-
機能的使用率の拡張:httpClientの機能(たとえば、httpmessagehandler)は、複数の呼び出し用に設計されており、クロスセクションの注意を効率的に提供できます。
接続プール:httpClientを介してTCP/IP接続を再利用してTCP/IP接続を再利用して、パフォーマンスを改善するための各要求の接続が再確立されないようにします。
ステータス処理プログラム:
httpmessagehandlersは、リクエスト間でアプリケーションレベルの状態を維持できます。
提案-
費用分析に基づいて、各アクセス独立APIのアプリケーションライフサイクルを維持することを一般的にお勧めします。この方法は、リソースの効率、パフォーマンス、機能の最良のバランスを提供します。
以上が各Web API呼び出しに新しいHTTPCLIENTを作成することは、本当に効率的ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。