Non penso che sia possibile catturare ogni singola pagina di visualizzazione, ma penso che si possa essere in grado di acquisire informazioni sufficienti per essere utili per l'analisi dell'utilizzo del sito Web.
Creare una tabella di database con colonne per: nome della pagina Web, nome utente, ora di inizio e ora di fine.
Al caricamento della pagina, INSERIRE un record nella tabella contenente i dati per i primi tre campi. Restituire l'ID di quel record per uso futuro.
Su qualsiasi navigazione, AGGIORNA il record nel gestore eventi di navigazione, utilizzando l'ID restituito in precedenza.
Ci si ritroverà con molti più record con orari di inizio rispetto ai record con ora di inizio e di fine. Ma puoi fare queste analisi da questi semplici dati:
- È possibile contare il numero di visite a ciascuna pagina contando i tempi di inizio.
- È possibile calcolare il periodo di tempo in cui l'utente visualizza ciascuna pagina per i record che hanno sia l'ora di inizio che quella di fine.
- Se si dispone di altre informazioni sugli utenti, ad esempio ruoli o posizioni, è possibile eseguire ulteriori analisi della visualizzazione delle pagine. Ad esempio, se conosci i ruoli, puoi vedere quali ruoli utilizzano maggiormente le pagine.
È possibile che i dati vengano distorti dal fatto che alcune pagine vengono abbandonate più spesso di altre.
Tuttavia, si può certamente provare ad acquisire questi dati e vedere come appare ragionevole. A volte nel mondo reale, dobbiamo rendere debito con un'informazione meno che perfetta. Ma potrebbe essere abbastanza.
Edit: Uno di questi approcci potrebbe soddisfare le vostre esigenze.
1) Ecco la parte HTML di una soluzione Ajax . È dal this page, che ha il codice PHP per la registrazione delle informazioni in un file di testo - abbastanza facile da passare alla scrittura in un database, se lo si desidera.
<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 creazione di un timer in Page_Load
. Scrivi il record del database iniziale a quel punto. Quindi, sull'evento Elapsed
del timer, eseguire un aggiornamento di tale record. Effettuare un aggiornamento finale in onbeforeunload
. Quindi, se per qualche motivo perdi l'ultimo evento onbeforeunload
, almeno avrai registrato la maggior parte del tempo trascorso dall'utente sulla pagina (a seconda del timer Interval
). Naturalmente, questa soluzione sarà relativamente ricca di risorse se si aggiorna ogni secondo e si hanno centinaia o migliaia di utenti simultanei. Pertanto, è possibile rendere configurabile l'attivazione e la disattivazione di questa funzione per l'applicazione.
Il "gestore di eventi di navigazione" è disponibile in JavaScript? (Scusate, sono un programmatore di Windows. Non faccio molto lavoro sul web.) –
@ Jonathan Allen: ho usato "gestore di eventi di navigazione" come termine generale per un numero di eventi incluso cose come un clic del pulsante o il collegamento ipertestuale che porta l'utente a un'altra pagina. Questo potrebbe accadere su un menu. Ogni volta che l'utente fa clic su qualcosa che si sposta su un'altra pagina, lascia la pagina corrente. A quel punto, puoi catturare il tempo in cui hanno lasciato la pagina e registrarla. Se si dispone di collegamenti costituiti da tag di ancoraggio, potrebbe essere necessario cambiarli in LinkButtons in modo da poter acquisire l'evento sul lato server. – DOK
il "gestore eventi di navigazione" può essere javascript. Un buon candidato è window.unload. – Guillaume