DNSルックアップ、TLSハンドシェイク、最初のバイトまでの時間など、HTTP/sリクエストのさまざまな段階の期間を印刷します。プロセスタイミングを測定するTimeコマンドと同様に、 nettimeコマンドはHTTP/sリクエストのタイミングを測定します。 node.jsでHTTPタイミングの理解と測定の詳細については、詳細を見つけることができます。
注意:コマンドラインオプションは0.xと1.xバージョンの間で変更されたため、Curlと互換性があります。 nettimeコマンドラインツールを使用する場合は、影響を受けるオプションを確認してください。
-e, --ignore-certificate => -k, --insecure
-u, --unit => -t, --time-unit
-U, --user => -u, --user
プログラマティックインターフェイスは変更されず、互換性があり続けています。
node.js> = 14.8がインストールされていることを確認してください。 nettimeパッケージをグローバルにインストールし、サンプルWebサイトのタイミングを印刷します。
$ npm install -g nettime
$ nettime https://www.google.com
Phase Finished Duration
-----------------------------------
Socket Open 0.023s 0.023s
DNS Lookup 0.024s 0.001s
TCP Connection 0.053s 0.029s
TLS Handshake 0.133s 0.079s
First Byte 0.174s 0.041s
Content Transfer 0.176s 0.002s
Socket Close 0.177s 0.001s
-----------------------------------
Status Code: OK (200)パラメーターなしでnettimeを実行すると、使用手順を印刷します。
Usage: nettime [options] <URL>
Options:
-V, --version output the version number
-0, --http1.0 use HTTP 1.0
--http1.1 use HTTP 1.1 (default)
--http2 use HTTP 2.0
-c, --connect-timeout <ms> maximum time to wait for a connection
-d, --data <data> data to be sent using the POST verb
-f, --format <format> set output format: text, json, raw
-H, --header <header> send specific HTTP header
-i, --include include response headers in the output
-I, --head use HEAD verb to get document info only
-k, --insecure ignore certificate errors
-L, --location follow redirects
-o, --output <file> write the received data to a file
-t, --time-unit <unit> set time unit: ms, s+ns
-u, --user <credentials> credentials for Basic Authentication
-X, --request <verb> specify HTTP verb to use for the request
-C, --request-count <count> count of requests to make (default: 1)
-D, --request-delay <ms> delay between two requests
-A, --average-timings print an average of multiple request timings
-h, --help output usage information
The default output format is "text" and time unit "ms". Other options
are compatible with curl. Timings are printed to the standard output.
Examples:
$ nettime -f json https://www.github.com
$ nettime --http2 -C 3 -A https://www.google.com
node.js> = 14.8を使用していることを確認してください。 nettimeパッケージをローカルにインストールし、応答を待つ時間を取得し、サンプルWebページのコンテンツをダウンロードします。
npm install --save nettime const { nettime , getDuration } = require ( 'nettime' )
nettime ( 'https://www.google.com' )
. then ( result => {
if ( result . statusCode === 200 ) {
let timings = result . timings
let waiting = getDuration ( [ 0 , 0 ] , timings . firstByte )
let downloading = getDuration ( timings . firstByte , timings . contentTransfer )
console . log ( 'Waiting for the response:' , nettime . getMilliseconds ( waiting ) + 'ms' )
console . log ( 'Downloading the content:' , nettime . getMilliseconds ( downloading ) + 'ms' )
}
} )
. catch ( error => console . error ( error ) )メインモジュールは、HTTP/sリクエストを作成し、結果オブジェクトに約束を返す関数をエクスポートします。この関数は、プロパティ、 nettime 、 getDuration 、 getMilliseconds 、およびisRedirectを搭載しているため、エクスポートをいくつかの静的関数を持つオブジェクトとして消費できます。
const nettime = require ( 'nettime' )
const { nettime , getDuration } = require ( 'nettime' )入力引数は、リクエストを行うためのURLを備えた文字列、または複数のプロパティを持つオブジェクトです。
入力オブジェクトには以下を含めることができます。
url :リクエストを行うためのURLを備えた文字列。credentials : usernameとpasswordの文字列プロパティを使用して、基本認証HTTPヘッダーのフォーマットに使用するオブジェクト。data :http動詞POSTとデフォルトでコンテンツタイプのapplication/x-www-form-urlencodedを使用してサーバーに送信する文字列またはバッファー。failOnOutputFileError :出力ファイルに書き込みが失敗した場合、リクエストのタイミング操作が失敗するのを防ぐためのブール波。 falseに設定されている場合、エラーは標準の出力に印刷され、プロセス終了コードは2に設定されます。 outputFileが指定されている場合にのみ有効です。デフォルトはtrueです。headers :ヘッダー名を文字列キーとして、文字列値としてヘッダー値を持つオブジェクト。httpVersion :プロトコルバージョン( '1.0'、 '1.1'、または '2.0')を備えた文字列をサーバーに送信します。 (node.js HTTPサポートは1.1でハードコードされています。サーバー側のみで1.0と1.1の間に違いがあります。Node.jsは、バージョン8.4.0または新しいコマンドライムオプションでHTTP/2をサポートします。followRedirects :リクエストを続けるためのブール値、元の応答にリダイレクトHTTPステータスコードが含まれていた場合includeHeaders :約束された結果オブジェクトに応答ヘッダーを含むプロパティheaders ( Object )を含めるためのブール値。 outputFileが指定されている場合、ヘッダーは出力ファイルの先頭にも書き込まれます。method :HTTP要求で使用するHTTP動詞。 -iまたは-dオプションが設定されていない限り、 GETはデフォルトです。outputFile :受信したデータを書き込むファイルパス。rejectUnauthorized :Webサイト証明書の検証が失敗した場合、httpsリクエストの完了を拒否するbooleanはtrue (デフォルト)に設定されます。それをfalseに設定すると、リクエストは証明書エラーを無視します。returnResponse :約束された結果オブジェクトに受信したデータを含むプロパティresponse ( Buffer )を含めるためのブール値。requestCount :1つではなく複数のリクエストを作成するための整数。requestDelay :各2つのリクエストの間に(ミリ秒単位で)遅延を導入するための整数。デフォルトは100です。timeout :最大時間(ミリ秒単位)を設定するために、それを中止する前に単一のリクエストがかかるはずです。結果のオブジェクトには次のものが含まれます。
httpVersion :httpバージョン、サーバーは(string)で応答しました。statusCode :応答のHTTPステータスコード(整数)。statusMessage :ステータスコード(文字列)のHTTPステータスメッセージ。timings :リクエストのさまざまな段階からのタイミングプロパティを備えたオブジェクト。タイミングは、Process.hrtimeで返されるように、リクエストが行われてから秒数秒とナノ秒の2つの整数を備えた配列です。headers :オプションで有効になっている場合、応答ヘッダーを備えたオプションオブジェクトincludeHeaders 。url :オプションのフォローfollowRedirectsがtrueに設定されている場合、要求されたURLを使用したオプションの文字列。 {
"httpVersion" : '1.1' ,
"statusCode" : 200 ,
"statusMessage" : "OK" ,
"timings" : {
"socketOpen" : [ 0 , 13260126 ] ,
"dnsLookup" : [ 0 , 13747391 ] , // Optional, if hostname was specified
"tcpConnection" : [ 0 , 152135165 ] ,
"tlsHandshake" : [ 0 , 433219351 ] , // Optional, if HTTPS protocol was used
"firstByte" : [ 1 , 888887072 ] ,
"contentTransfer" : [ 1 , 891221207 ] ,
"socketClose" : [ 1 , 893156380 ]
}
} Option requestCountが1より大きい場合、結果オブジェクトはrequestCount値と同じ長さの配列で返されます。オプションがtrueに設定されている場合、オプションがfollowRedirects使用すると、結果オブジェクトは、リダイレクト応答の存在とカウントに応じて、長さの配列で返されます。
注: time-unitパラメーターは、コマンドラインスクリプトの「テキスト」出力形式だけでなく、「JSON」のパラメーターにも影響します。 「MS」に設定すると、タイミング値がミリ秒単位で印刷されます。 「s+ns」に設定されている場合、タイミングはProcess.hrtimeの形式で配列として印刷されます。 nettime関数をプログラム的に呼び出すと、常にProcess.hrtimeの形式でタイミングを配列として返します。
以下の機能は、Process.hrtimeのタイミング形式と複数のリクエストからのタイミングの処理を支援するために、 nettime/lib/timingsモジュールからエクスポートと呼ばれるように公開されています。
getDuration(start, end) :2つのタイミングの違いを計算します。 Process.hrtimeの形式で2つの配列を期待し、同じプロセスの配列として結果を返します。hrtimeの形式。getMilliseconds(timing) :タイミングをミリ秒に変換します。 Process.hrtimeの形式で配列を期待し、整数として結果を返します。computeAverageDurations(multipleTimings) :イベントタイミングの配列から平均期間を計算します。アレイには、 nettime Responseのtimingsオブジェクトと同じキーを持つオブジェクトを含めることになっています。返されたオブジェクトには、プロセスのイベント期間を指す同じキーが含まれます。hrtimeの形式。createTimingsFromDurations(timings, startTime) :イベント期間からイベントのタイミングを再構築します。 timingsオブジェクトには、 nettime応答のtimingsオブジェクトと同じキーが含まれることになっていますが、プロセスのイベント期間を指しています。hrtimeの形式。返されたオブジェクトには同じキーが含まれますが、Process.hrtimeの形式のイベント時間を指します。 startTimeパラメーターは、イベント時間を帯びることができます。デフォルトはシフトなしです - [0, 0] 。isRedirect(statusCode) :HTTPステータスコードがリダイレクトを意味するかどうかを確認します。そうであればtrueを返し、それ以外の場合はfalse 。これらの方法も個別に必要になる可能性があります。
const { isRedirect } = require ( 'nettime' )
const {
getDuration , getMilliseconds ,
computeAverageDurations , createTimingsFromDurations
} = require ( 'nettime/lib/timings' )メソッドgetDuration 、 getMilliseconds 、およびisRedirect 、メインnettimeモジュールからエクスポートされるnettime関数の静的な方法としてもアクセスできます。
正式なスタイルガイドの代わりに、既存のコーディングスタイルを維持するように注意してください。新規または変更された機能のユニットテストを追加します。 Gruntを使用してコードをテストしてテストします。
Copyright(c)2017-2022 Ferdinand Prantl
MITライセンスに基づいてライセンスされています。