Я не думаю, что вы можете захватить каждый просмотр страницы, , но я думаю, что вы могли бы собрать достаточно информации, чтобы иметь смысл для анализа использования сайта.
Создание таблицы базы данных со столбцами для: имени веб-страницы, имени пользователя, времени начала и времени окончания.
При загрузке страницы вставьте в таблицу запись, содержащую данные для первых трех полей. Верните идентификатор этой записи для будущего использования.
В любой навигации ОБНОВИТЬ запись в обработчике события навигации, используя идентификатор, возвращенный ранее.
У вас будет гораздо больше записей с временем начала, чем с начальным и конечным временем. Но вы можете сделать этот анализ из этих простых данных:
- Вы можете посчитать количество посещений каждой страницы, посчитав время начала.
- Вы можете рассчитать время, в течение которого пользователь отображал каждую страницу для записей, имеющих время начала и окончания.
- Если у вас есть другая информация о пользователях, например, роли или местоположения, вы можете больше анализировать просмотр страниц. Например, если вы знаете роли, вы можете увидеть, какие роли используют какие страницы чаще всего.
Возможно, ваши данные будут искажены из-за того, что некоторые страницы заброшены чаще, чем другие.
Однако вы, безусловно, можете попытаться получить эти данные и посмотреть, насколько они разумны. Иногда в реальном мире нам приходится делать из-за неполной информации. Но этого может быть достаточно.
Редактировать: Любой из этих подходов может удовлетворить ваши потребности.
1) Вот HTML-часть решения Ajax . Это с этой страницы , в которой есть PHP-код для записи информации в текстовый файл - достаточно легко перейти на запись в базу данных, если хотите.
<html>
<head>
<title>Duration Logging Demo</title>
<script type=”text/javascript”>
var oRequest;
var tstart = new Date();
// ooooo, ajax. ooooooo …
if(window.XMLHttpRequest)
oRequest = new XMLHttpRequest();
else if(window.ActiveXObject)
oRequest = new ActiveXObject(“Microsoft.XMLHTTP”);
function sendAReq(sendStr)
// a generic function to send away any data to the server
// specifically ‘logtimefile.php’ in this case
{
oRequest.open(“POST”, “logtimefile.php”, true); //this is where the stuff is going
oRequest.setRequestHeader(“Content-Type”, “application/x-www-form-urlencoded”);
oRequest.send(sendStr);
}
function calcTime()
{
var tend = new Date();
var totTime = (tend.getTime() – tstart.getTime())/1000;
msg = “[URL:" location.href "] Time Spent: ” totTime ” seconds”;
sendAReq(‘tmsg=’ msg);
}
</script>
</head>
<body onbeforeunload=”javascript:calcTime();”>
Hi, navigate away from this page or Refresh this page to find the time you spent seeing
this page in a log file in the server.
</body>
</html>
2) Другой сотрудник предлагает создать таймер в Page_Load
. Напишите начальную запись базы данных в этот момент. Затем для события таймера Elapsed
обновите эту запись. Сделайте окончательное обновление в onbeforeunload
. Затем, если по какой-то причине вы пропустите самое последнее событие onbeforeunload
, по крайней мере, вы будете записывать большую часть времени, проведенного пользователем на странице (в зависимости от таймера Interval
). Конечно, это решение будет относительно ресурсоемким, если вы обновляете каждую секунду и у вас есть сотни или тысячи одновременно работающих пользователей. Таким образом, вы можете настроить его так, чтобы эта функция включалась и выключалась для приложения.