Время, которое пользователь проводит на сайте

Есть ли сервисы статистики, которые корректно считают эту информацию?
Ни один из известных мне сервисов не может учитывать время тех, у кого был единичный просмотр.
  • Вопрос задан
  • 9148 просмотров
Пригласить эксперта
Ответы на вопрос 10
mambet
@mambet
Совершенно корректно это время подсчитать невозможно (если только не отсылать на сервер данные о всех перемещениях и нажатиях пользователя на странице — а не только о тех, которые инициируют какое-то общение с сервером).

Чуть более корректно можно подсчитать, анализируя все обращения клиента на сервер самостоятельно. Скажем, пользователь открыл форму регистрации в 10.00. Мы знаем, что на её заполнение в среднем уходит 2 минуты. В 10.10 пользователь нажал на «Зарегистрироваться». Вероятнее всего, что реально он на сайте провёл около двух минут (отвлекаясь на что-то ещё), чем все десять минут.

По идее, составив табличку, где будут прописаны средние времена работы с той или иной страницей/действием + анализируя логи, можно более или менее корректно высчитать время работы человека на сайте.

В одном из проектов, к которому я имею отношение, мы считаем время по подобному алгоритму, правда, табличка у нас довольно упрощённая. Но и время нам нужно знать лишь приблизительно.

Но, может быть, есть и онлайн-сервисы, которые умеют подобное. Может быть кто-то ещё подскажет.
Ответ написан
Комментировать
sajgak
@sajgak
Скорее всего вам прийдется для этого самому немного извратиться. т.к. единственный способ проверки таких «единичных просмотров» — постоянный опрос пользователя. Соответственно самая простая реализация — раз в N секунд отправлять запрос на сервер через ajax. А там внутри уже будет считаться какая страница каким пользователем сколько смотрелось с погрешностью в те самые N секунд.

Конечно что это будет при хорошей посещаемости представить сложно, но если есть задача — есть ее реализация)
Ответ написан
gadzhi15
@gadzhi15
Посмотрите в сторону яндекс метрики, вроде там было что-то подобное.
Ответ написан
javenue
@javenue
Появилась идея, но не знаю насколько она рабочая, так как никогда такого не делал.
Время ведь можно считать на клиенте с помощью javascript и в необходимых ситуациях (например, переход по внешней ссылке) уже отправлять аяксом на сервер. Нужно только повесить на все внешние ссылки соответствующие обработчики. Ну и трекать, когда человек просто вводит в строке браузера другой URL и уходит с сайта. Насколько мне известно, и то, и другое реализовать можно.
Ответ написан
Комментировать
philpirj
@philpirj
Посмотрите ещё и сюда.
Ответ написан
Комментировать
@RomAndry
И еще почитайте это
Ответ написан
Комментировать
@selenite
анализируя логи, можно более или менее корректно высчитать время работы человека на сайте.

Всё время, прошедшее после последнего клика — это мифотворчество, не учитывающее возможность существования нескольких сеансов (вкладок браузера).

Еще вот какой парадокс есть: ныне существует масса левых сайтов типа «покликай на баннеры — получи денежку». Так вот, вы бы видели то многообразие самописных «ботов», которые пишет подкованное студентиё ради этой сказочной денежки на всём, к чему нашелся туториал. Питоны-перлы-пхп, AutoIT, «басик», Дельфи, Шарп, JS (Greasemonkey++). Там и копипаста заранее приготовленных «комментов», и имитация скорости ввода (зачем!? хз. но такой скрипт препарировал).
Ответ написан
Комментировать
Shvonder
@Shvonder
Если бы я был параноиком и хотел как можно точнее отследить время пребывания на сайте я бы сделал так:

1. Клиент подключился. Засекаем время.
2. Со стороны клиента открываем постоянное соединение яваскриптом (comet, long-polling и т.д.)
3. Если клиент перешел на другую страницу учитываем время (время просмотра той страницы и суммарное время на сайте) и переходим к п.1
4. Если посетитель не двигал мышкой, или не скроллил страницу в течение N-го времени яваскрипт разрывает соединение.
5. Если клиент разорвал соединение и не подключался вновь в течение допустим 10 секунд то значит он закрыл вкладку или сработал пункт 4 или он оставил вкладку активной и ушел пить чай. Останавливаем учет времени
Ответ написан
М.б. стоит уточнить — а зачем это вообще надо?
Ответ написан
Комментировать
@SunR1sen_1
Чтобы не открывать постоянное соединение с сервером и не пинговать каждые n секунд, можно придумать следующее:
1) Есть метод perfomance.now() который начинает отсчитывать время, прошедшее с момента загрузки страницы. Сохраняем это время как стартовое.
2) Повесить обработчик события window.beforeUnload() и в нём тем же perfomance.now() получаем время конечное, когда пользователь собирается закрыть страницы. Сохраняем его как конечное.
3) В том же методе перед закрытием окна вызываем navigator.sendBeacon(url, data). По сути это обычный POST запрос, который не требует ответа от сервера. В него и передаем инфу какую хотим (например логин пользователя и время начальное и конечное)
4) Поздравляю, вы прекрасны!

P.S.: Есть нюанс по поводу времени, оно будет считаться вплоть до тех пор, пока пользователь не закроет страницу. Даже если она сутки провесит в браузере. В таком случае можно ещё поиграться с методами onpageshow и onpagehide, чтобы фиксировать только активное время юзера.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы