Время выполнения веб-запроса – С#
В этой статье вы найдете простой пример того, как создать собственный обработчик сообщений для регистрации времени выполнения веб-запроса.
Иногда для оптимизации производительности может потребоваться узнать время выполнения веб-запроса. Например, вы хотите знать, сколько времени занимает чтение файла в файловой системе или загрузка данных с удаленного сервера.
Обработчик сообщений для регистрации времени загрузки файла
Создание TimeLoggerMessageHandler для регистрации времени выполнения веб-запроса
В следующем фрагменте кода показано, как создать TimeLoggerMessageHandler для регистрации времени, затраченного на чтение файла из файловой системы.
1using System;
2using System.Diagnostics;
3using Aspose.Html;
4using Aspose.Html.Net;
5...
6
7 // Define the TimeLoggerMessageHandler class that is derived from the MessageHandler class
8 public class TimeLoggerMessageHandler : MessageHandler
9 {
10 // Override the Invoke() method
11 public override void Invoke(INetworkOperationContext context)
12 {
13 // Start the stopwatch
14 var stopwatch = Stopwatch.StartNew();
15
16 // Invoke the next message handler in the chain
17 Next(context);
18
19 // Stop the stopwatch
20 stopwatch.Stop();
21
22 // Print the result
23 Console.WriteLine("Request: " + context.Request.RequestUri);
24 Console.WriteLine("Time: " + stopwatch.ElapsedMilliseconds + "ms");
25 }
26 }
Используйте класс Stopwatch в пространстве имен System.Diagnostics, чтобы точно измерить время, необходимое для выполнения веб-запроса. Метод StartNew() начинает регистрировать время выполнения веб-запроса до тех пор, пока не будет вызван метод Stop().
Добавление TimeLoggerMessageHandler в конвейер обработчиков сообщений
Конструктор Configuration() инициализирует экземпляр класса
Configuration. После создания конфигурации вызываются методы GetService
Используйте конструктор
HTMLDocument(address, configuration
) для инициализации HTML-документа и реализации примера для регистрации времени загрузки документа.
1using Aspose.Html;
2using Aspose.Html.Net;
3using Aspose.Html.Services;
4...
5
6 // Create an instance of the Configuration class
7 using var configuration = new Configuration();
8
9 // Add the TimeLoggerMessageHandler to the chain of existing message handlers
10 var service = configuration.GetService<INetworkService>();
11 var handlers = service.MessageHandlers;
12
13 handlers.Insert(0, new TimeLoggerMessageHandler());
14
15 // Prepare path to a source document file
16 string documentPath = Path.Combine(DataDir, "input.htm");
17
18 // Initialize an HTML document with specified configuration
19 using var document = new HTMLDocument(documentPath, configuration);
Вы можете скачать полные примеры и файлы данных с GitHub.