No creo que pueda capturar todas las páginas vistas, , pero creo que es posible que pueda capturar suficiente información para que valga la pena analizar el uso del sitio web.
Cree una tabla de base de datos con columnas para: nombre de la página web, nombre de usuario, hora de inicio y hora de finalización.
En la carga de la página, INSERTE un registro en la tabla que contiene datos para los primeros tres campos. Devuelva la identificación de ese registro para uso futuro.
En cualquier navegación, ACTUALICE el registro en el controlador de eventos de navegación, utilizando la ID devuelta anteriormente.
Usted va a terminar con muchos más registros con horas de inicio de los registros con tanto tiempo de inicio y fin. Sin embargo, se puede hacer estos análisis de este sencillo de datos:
- puede contar el número de visitas a cada página contando las horas de inicio.
- Puede calcular la cantidad de tiempo que el usuario ha mostrado cada página para los registros que tienen tanto tiempo de inicio como de finalización.
- Si tiene otra información sobre usuarios, como roles o ubicaciones, puede hacer más análisis de visualización de páginas. Por ejemplo, si conoce roles, puede ver qué roles usan más páginas.
Es posible que sus datos se distorsionen por el hecho de que algunas páginas se abandonan con más frecuencia que otras.
Sin embargo, ciertamente puede intentar capturar esta información y ver qué tan razonable parece. A veces, en el mundo real, tenemos que hacerlo debido a la falta de información perfecta. Pero eso puede ser suficiente.
Editar: Cualquiera de estos enfoques podría satisfacer sus necesidades.
1) Aquí está la parte HTML de Solución Ajax. Es de this page, que tiene un código PHP para registrar la información en un archivo de texto, lo suficientemente fácil como para pasar a escribir en una base de datos si lo desea.
<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) Another fellow propone la creación de un temporizadoren Page_Load
. Escriba el registro inicial de la base de datos en ese punto. Luego, en el evento del temporizador Elapsed
, haga una actualización de ese registro. Haga una actualización final en onbeforeunload
. Luego, si por alguna razón se pierde el último evento onbeforeunload
, al menos habrá grabado la mayor parte del tiempo que el usuario pasó en la página (según el temporizador Interval
). Por supuesto, esta solución requerirá muchos recursos si actualiza cada segundo y tiene cientos o miles de usuarios simultáneos. Por lo tanto, podría hacer que sea configurable que esta característica se active y desactive para la aplicación.
¿El "controlador de eventos de navegación" está disponible en JavaScript? (Lo siento, soy programador de Windows. No trabajo muy a menudo en la Web.) –
@Jonathan Allen: Utilicé el "controlador de eventos de navegación" como un término general para una serie de eventos que incluyen cosas como un clic de botón o un clic de hipervínculo que lleva al usuario a otra página. Esto podría ocurrir en un menú. Cada vez que el usuario hace clic en algo que navega a otra página, está abandonando la página actual. En ese momento, puede capturar el tiempo que dejaron la página y grabarla. Si tiene enlaces que consisten en etiquetas de anclaje, es posible que tenga que cambiarlas a LinkButtons para que pueda capturar el evento en el lado del servidor. – DOK
el "controlador de eventos de navegación" puede ser javascript. Un buen candidato es window.unload. – Guillaume