DNS 조회, TLS 핸드 셰이크, 첫 바이트 등과 같은 HTTP/S 요청의 다양한 단계의 시간 기간을 인쇄합니다. Time Command와 마찬가지로 프로세스 타이밍을 측정하는 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 패키지를 전 세계적으로 설치하고 타이밍을 인쇄하십시오.
$ 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 패키지를 로컬로 설치하고 응답을 기다리고 샘플 웹 페이지의 내용을 다운로드하는 시간 시간을 얻으십시오.
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 : 기본 인증 HTTP 헤더의 형식화에 사용되는 username 및 password 문자열 속성이있는 개체.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 또는 -Expose-HTTP2 명령 라임 옵션을 사용하여 HTTP/2를 지원합니다.followRedirects : Boolean은 계속 요청을 계속합니다. 원래 응답에 HTTP 상태 코드가 포함 된 경우includeHeaders : 약속 된 결과 개체에 응답 헤더가있는 부동산 headers ( Object )를 포함하는 부울. outputFile 이 지정되면 헤더는 출력 파일의 시작 부분에도 기록됩니다.method : HTTP 요청에 사용할 HTTP 동사; -i 또는 -d 옵션이 설정되지 않는 한 GET 기본값입니다.outputFile : 수신 된 데이터를 작성하려면 파일 경로.rejectUnauthorized : HTTPS 요청을 거부하기위한 부울 웹 사이트 인증서의 유효성이 실패하면 true (기본값)로 설정됩니다. false 로 설정하면 요청이 인증서 오류를 무시하게됩니다.returnResponse : 약속 된 결과 개체에 수신 된 데이터가있는 속성 response ( Buffer )을 포함시키기위한 부울.requestCount : 하나가 아닌 여러 요청을위한 정수.requestDelay : Integer는 각각 두 요청 사이에 지연 (밀리 초)을 도입합니다. 기본값은 100입니다.timeout : 최대 시간을 설정하려면 (밀리 초)를 설정하려면 단일 요청을 중단하기 전에 수행해야합니다.결과 객체에는 다음이 포함됩니다.
httpVersion : 서버가 (문자열)으로 대응 한 http 버전.statusCode : 응답의 HTTP 상태 코드 (정수).statusMessage : 상태 코드 (문자열)에 대한 HTTP 상태 메시지.timings : 요청의 다양한 단계에서 타이밍 속성이있는 개체. 타이밍은 Process.HRTIME에 의해 반환 된대로 요청이 이루어진 이후 2 초와 나노초가 통과 된 두 개의 정수가있는 배열입니다.headers : 옵션이 includeHeaders 헤더에서 활성화 된 경우 응답 헤더가있는 옵션 객체.url : 요청 된 URL이있는 옵션 문자열은 옵션 followRedirects true 로 설정된 경우. {
"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 ]
}
} 옵션 requestCount 1 보다 큰 경우 결과 객체는 requestCount 값과 동일한 길이의 배열로 리턴됩니다. 옵션이 followRedirects true 로 설정된 옵션이 설정되면 결과 객체는 응답의 존재 및 수에 따라 길이의 배열로 반환됩니다.
참고 : time-unit 매개 변수는 명령 줄 스크립트의 "텍스트"출력 형식뿐만 아니라 "JSON"에도 영향을 미칩니다. "MS"로 설정되면 타이밍 값이 밀리 초로 인쇄됩니다. "S+NS"로 설정하면 Timings가 프로세스의 배열로 인쇄됩니다. HRTIME의 형식. nettime 기능을 프로그래밍 방식으로 호출하면 프로세스의 배열로 타이밍을 항상 반환합니다 .HRTIME의 형식.
다음 기능은 Process.hrtime의 타이밍 형식 및 여러 요청의 타이밍을 다루기 위해 nettime/lib/timings 모듈에서 지명 된 내보내기로 노출됩니다.
getDuration(start, end) : 두 타이밍의 차이를 계산합니다. HRTIME의 형식에서 두 개의 배열을 기대하고 결과를 동일한 프로세스에서 배열로 반환합니다 .HRTIME의 형식.getMilliseconds(timing) : 타이밍을 밀리 초로 변환합니다. 프로세스의 배열을 기대하고 HRTIME의 형식을 기대하고 결과를 정수로 반환합니다.computeAverageDurations(multipleTimings) : 일련의 이벤트 타이밍에서 평균 지속 시간을 계산합니다. 배열에는 nettime 응답의 timings 객체와 동일한 키가있는 객체가 포함되어 있어야합니다. 반환 된 객체에는 프로세스의 이벤트 기간을 가리키는 동일한 키가 포함되어 있습니다.createTimingsFromDurations(timings, startTime) : 이벤트 기간에서 이벤트 타이밍을 재구성합니다. timings 객체는 nettime 응답의 timings 객체와 동일한 키를 포함하지만 프로세스의 이벤트 지속 시간을 지적합니다. 반환 된 객체에는 동일한 키가 포함되어 있지만 프로세스의 이벤트 시간을 가리 킵니다 .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를 사용하여 코드를 보풀하고 테스트하십시오.
저작권 (C) 2017-2022 Ferdinand Prantl
MIT 라이센스에 따라 라이센스.