Difficoltà: registra il tempo totale
Se disponi di uno script < > sezione alla fine della tua pagina HTML, non verrà eseguita fino a quando il resto della pagina non sarà completamente caricato e probabilmente renderizzato (ma controllami su quello). Nota che il client e il server probabilmente non avranno lo stesso tempo di clock, ma potresti avere uno < script > tag alla fine del documento invia una richiesta AJAX al server con un token univoco incorporato che dice al server, "Richiesta (identificatore richiesta) è completa e visualizzata dal browser."
Sul lato server, le richieste che si desidera applicare all'ora dovrebbero inserire un hash degli identificatori di richiesta originali e i timestamp nella sessione dell'utente. Il messaggio "request-complete" da quell'utente verrà inserito come una nuova richiesta che dovrebbe cercare l'identificativo della richiesta per la richiesta nella sessione, ottenere il timestamp di inizio e scrivere il tempo di fine meno la differenza di avvio a un registro o qualsiasi altra cosa. Quindi dovrebbe rimuovere quell'identificatore di richiesta dal hashtable.
In realtà, potrebbe essere necessario pulire l'hashtable, specialmente se l'utente annulla una richiesta (non verrà mai completata) o si disconnette, o semplicemente chiude il browser. Inoltre, se l'utente richiede qualcosa che non termina nel tuo codice JavaScript completo, ad esempio immagini, pagine a cui hai dimenticato di aggiungere il tag, ecc. Questo probabilmente non è qualcosa che vuoi lasciare in esecuzione nel codice di produzione.
Più semplice: tempo di richiesta di log e tempo di rendering separatamente
Qualcosa di più semplice da misurare e probabilmente altrettanto utile dal punto di vista del business è quanto tempo impiega il web server a soddisfare la richiesta. Il metodo principale del nostro master-servlet inizia con:
// Start timing the request
long startMs = System.currentTimeMillis();
E termina con:
long elapsedMs = System.currentTimeMillis() - startMs;
if (elapsedMs > LONG_TIME) {
logger.error("Done REALLY SLOWLY: " + elapsedMs + "ms");
} else if (elapsedMs > PRETTY_LONG_TIME) {
logger.warn("Done SLOWLY: " + elapsedMs + "ms");
} else {
logger.info("Done: " + elapsedMs + "ms");
}
Ora i registri delle applicazioni sul tuo server hanno errori per richieste lunghe. Si potrebbe anche averlo pagina se qualcosa è lento! Per distinguere tra tempo del browser e ora del server, è sufficiente utilizzare gli strumenti integrati in Chrome o Firefox che mostrano la durata di ciascuna parte di un edificio della pagina. C'è un grafico temporale e altre cose fantastiche integrate lì.
Forse se hai un'applicazione all-AJAX è un problema, ma puoi costruire questo stesso timing sul lato server e inviare un risultato di timing al server.