1

我正在寻找在向特定网页发出 http web 请求时测量 TTFB(到第一个字节的时间)和 TTLB(到最后一个字节的时间)的方法。

如何在 C# 中进行测量。

我正在编写一个监视工具来测量访问网页的 TTFB 和 TTLB。

4

2 回答 2

3

到目前为止回答的代码将为您提供 TTLB,以获得 TTFB,虽然不是 100% 准确,但您必须收听课程的事件DownloadProgressChanged,并在第一次通话时记录到目前为止WebClient记录的时间,而不是停止它StopWatch.

于 2015-11-12T02:19:25.477 回答
1

您可以使用WebClient进行阻塞调用并测量所需时间:

     using (var wc = new WebClient())
     {
         var sw = new Stopwatch();
         sw.Start();
         wc.DownloadData("http://www.stackoverflow.com");
         sw.Stop();
        Console.WriteLine("Elapsed time (ms): " + sw.ElapsedMilliseconds.ToString());
     }
     Console.ReadLine();

或者,如果您需要异步执行:

    static Stopwatch sw;
    static void Main(string[] args)
    {
        using (var wc = new WebClient()) {
            sw = new Stopwatch();
            sw.Start();
            wc.DownloadDataCompleted +=wc_DownloadDataCompleted;
            wc.DownloadDataAsync(new Uri("http://www.stackoverflow.com"));

        }
        Console.ReadLine();
    }

    static void wc_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e)
    {
        sw.Stop();
        Console.WriteLine("Elapsed time (ms): " + sw.ElapsedMilliseconds);
    }

当然,您可能希望捕获错误并检查 http 响应以确保请求成功,但您明白了。

于 2013-05-15T04:05:47.117 回答