#javascript #analytics
Вопрос:
Мне было поручено разработать показатели того, как пользователи взаимодействуют с нашим веб-порталом. Коллега предложил мне заглянуть в «тепловые карты», чтобы отслеживать положение мыши пользователя. Эта идея показалась мне классной. Похоже, что уже есть некоторые решения SaaS, но наш бюджет невелик, поэтому я добавил немного javascript:
class UserLog {
constructor(){
// ...
this.results = {... mouseMovements=[]}
}
/* ... more functions ... */
trackMouseMovement(){
document.addEventListener('mousemove', (event) => {
this.results.mouseMovements.push({
timestamp: Date.now(),
x: event.pageX,
y: event.pageY
});
});
}
}
В настоящее время я использую таймер для отправки этого массива на мой сервер каждые 10 секунд:
window.setInterval(() => {
$.ajax({
url: endpoint,
type: "POST",
data: this.results,
});
},10*1000);
Я бегу в mouseMovements
массив, длина которого может достигать нескольких сотен элементов, и заставляю мой браузер плакать, когда выполняется ajax.
Я могу попробовать отправлять данные чаще или попробовать предварительную обработку mouseMovements
массива:
preprocessData: results =>{
const newResults= {
...results,
mouseMovements: results.mouseMovements.filter((val, index) => index % 10 == 0)
}
return newResults
}
(1) Как люди реализуют протокол отслеживания мыши, который позволяет машине пользователя работать в обычном режиме и обеспечивает достаточное разрешение на задней панели для воспроизведения сеанса пользователя и понимания того, как улучшить их работу на сайте?
(2) Как часто я должен отправлять ajax-запросы на свой сервер? Я просматриваю некоторые крупные сайты и замечаю, что их запросы, похоже, зависят от кликов. Является ли отслеживание движений мыши и прокрутки не оптимальным? Или есть лучший способ сбора этой информации?
Комментарии:
1. есть ли причина, по которой вам нужно отслеживать перемещение мыши ? является ли это событие частью взаимодействия? по сравнению с кликами, событиями наведения курсора мыши и т. Д.?
2. Я единственный разработчик на этом сайте. Я очень хорошо разбираюсь в бэкэнде и анализе данных, но я абсолютно напуган тем, что испорчу интерфейс, и хочу иметь в своем распоряжении все инструменты, когда мне неизбежно придется отлаживать пользовательские билеты
Ответ №1:
Во-первых, вам нужно ограничить свой запрос API, большинство сотрудничающих продуктов, таких как Figma
инструмент проектирования, в котором вы можете видеть положение мыши других людей в режиме реального времени, скорее всего, отправляет положение мыши один раз 600ms
.
600ms
это странно, но если вы думаете о позициях мыши как keyframes
, то вы можете анимировать между двумя позициями мыши, так что пользователь всегда будет видеть плавное движение мыши, конечно, это зависит от вашего алгоритма анимации.
Комментарии:
1. Я не рассматривал возможность анимации недостающих кадров. Отличная идея! В чем причина ограничения API? DOS-атаки?
2. Потому что событие перемещения мыши происходит очень быстро! Это легко сокрушит сервер.