Есть ли способ с помощью htmx измерить время, необходимое для получения ответа от сервера, начиная с момента отправки запроса?
Мое использование заключается в том, что у меня есть пользователь, который вводит строку поиска, каждая новая модификация текстового поля ввода (с ограничением в 50 мс) запускает новый запрос к серверу для получения результатов поиска. Полученный HTML-код затем отображается на странице каждый раз, когда сервер отвечает какими-либо результатами. Я хотел бы написать текст с «387 результатов за 17 мс».
количество результатов действительно отправляется сервером, но время, необходимое для их отображения, также зависит от скорости сети и других факторов малого форм-фактора
Да, но скорость сети совершенно не влияет на скорость работы вашего сервера. Фактически, если вы позволите этому быть учтенным в числе, у вас не будет возможности узнать, вызвано ли это число медленным программным обеспечением или медленной сетью. Если вы позволите серверу указать, сколько времени это заняло, скажем, 17 мс, но на вкладке сети инструментов разработчика вашего браузера вы увидите, что обработка запроса все равно заняла 500 мс, вы точно знаете, что с сетью что-то не так.
Согласованный. Я ожидаю, что «387 результатов за 17 мс» означает, что именно столько времени потребовалось для поиска результатов (в БД), не включая тайм-ауты клиента и время запроса, это кажется неактуальным для конечного пользователя, который, как мне кажется, и вы всегда можете использовать аналитику для внутренней информации.
Я думаю, вы, ребята, правы. Я убежден. Закрытие этого вопроса.
Фактический ответ — использовать события 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.`);">
Но в этом сообщении есть две части информации; количество результатов и общее время обработки. Количество результатов может поступать только от сервера, так что нет особых причин не позволять серверу также измерять время обработки?