axios 如何在NodeJS中测量请求占用的时间

yvgpqqbh  于 5个月前  发布在  iOS
关注(0)|答案(3)|浏览(75)
const axios = require("axios");

axios.get('url')
  .then(response => {
     console.log(response)
  })
  .catch(err => console.log(err))

字符串
我如何衡量网站返回完整页面需要多少时间?

fzsnzjdm

fzsnzjdm1#

您可以使用performance.now()来测量开始和完成请求之间的时间。

const axios = require("axios");
const { performance } = require('perf_hooks');

let time = performance.now();

axios.get('url')
  .then(response => {
     console.log(response)
     console.log(`${(performance.now() - time) / 1000} seconds`);
  })
  .catch(err => console.log(err))

字符串

sauutmhj

sauutmhj2#

此外,您可以轻松地使用axios.interceptors获取请求开始时和响应到达后的时间并将其添加为axios.create的一部分.对于请求:

axios.interceptors.request.use(function (config) {
  config.timeData = { startTime: new Date()}
  return config;
}, function (error) {
  return Promise.reject(error);
});

字符串
作为回应:

axios.interceptors.response.use(function (response) {
  response.config.timeData.endTime = new Date()
  return response;
}, function (error) {
  return Promise.reject(error);
});


你可以在这里查看更多关于拦截器的信息

jdg4fx2g

jdg4fx2g3#

在2023年(及以后),更好的方法是使用内置的fetch API,它可以自动捕获请求定时测量。下面是一个例子:

import { performance } from 'node:perf_hooks';

const url = 'https://jsonplaceholder.typicode.com/posts/1';
const response = await fetch(url);
await response.json();
console.log(performance.getEntriesByName(url));

字符串
产出:

[
  PerformanceResourceTiming {
    name: 'https://jsonplaceholder.typicode.com/posts/1',
    entryType: 'resource',
    startTime: 31.364732027053833,
    duration: 764.867231965065,
    initiatorType: 'fetch',
    nextHopProtocol: undefined,
    workerStart: 0,
    redirectStart: 0,
    redirectEnd: 0,
    fetchStart: 31.364732027053833,
    domainLookupStart: undefined,
    domainLookupEnd: undefined,
    connectStart: undefined,
    connectEnd: undefined,
    secureConnectionStart: undefined,
    requestStart: 0,
    responseStart: 0,
    responseEnd: 796.2319639921188,
    transferSize: 300,
    encodedBodySize: 0,
    decodedBodySize: 0
  }
]


duration属性提供您正在查找的内容。有关更多详细信息,请参阅https://nodejs.org/api/perf_hooks.html

相关问题