Измерьте запрос и время ответа с помощью htmx

Есть ли способ с помощью htmx измерить время, необходимое для получения ответа от сервера, начиная с момента отправки запроса?

Мое использование заключается в том, что у меня есть пользователь, который вводит строку поиска, каждая новая модификация текстового поля ввода (с ограничением в 50 мс) запускает новый запрос к серверу для получения результатов поиска. Полученный HTML-код затем отображается на странице каждый раз, когда сервер отвечает какими-либо результатами. Я хотел бы написать текст с «387 результатов за 17 мс».

Но в этом сообщении есть две части информации; количество результатов и общее время обработки. Количество результатов может поступать только от сервера, так что нет особых причин не позволять серверу также измерять время обработки?

Gimby 25.06.2024 10:52

количество результатов действительно отправляется сервером, но время, необходимое для их отображения, также зависит от скорости сети и других факторов малого форм-фактора

Valentin Iovene 25.06.2024 11:09

Да, но скорость сети совершенно не влияет на скорость работы вашего сервера. Фактически, если вы позволите этому быть учтенным в числе, у вас не будет возможности узнать, вызвано ли это число медленным программным обеспечением или медленной сетью. Если вы позволите серверу указать, сколько времени это заняло, скажем, 17 мс, но на вкладке сети инструментов разработчика вашего браузера вы увидите, что обработка запроса все равно заняла 500 мс, вы точно знаете, что с сетью что-то не так.

Gimby 25.06.2024 12:21

Согласованный. Я ожидаю, что «387 результатов за 17 мс» означает, что именно столько времени потребовалось для поиска результатов (в БД), не включая тайм-ауты клиента и время запроса, это кажется неактуальным для конечного пользователя, который, как мне кажется, и вы всегда можете использовать аналитику для внутренней информации.

mariodev 25.06.2024 16:20

Я думаю, вы, ребята, правы. Я убежден. Закрытие этого вопроса.

Valentin Iovene 25.06.2024 16:44
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
5
70
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Фактический ответ — использовать события beforeRequest и afterRequest для определения времени:

<form hx-post = ""
      hx-on::before-request = "event.detail.xhr.go_time = performance.now()"
      hx-on::after-request = "const elapsed = performance.now() - event.detail.xhr.go_time;
                            console.info(`That took ${elapsed} milliseconds.`);">

Другие вопросы по теме