2010-03-25 10 views
6

Trabajo en un sistema corporativo interno que tiene un front-end web que usa Tomcat.¿Cómo puedo controlar el tiempo de renderizado en un navegador?

  1. ¿Cómo puedo controlar el tiempo de renderización de páginas específicas en un navegador (IE6)?
  2. Me gustaría poder registrar los resultados en un archivo de registro (archivo de registro separado o el registro de acceso Tomcat).

EDITAR: Idealmente, necesito supervisar la representación en los clientes que acceden a las páginas.

+0

¿Conoce a "El violinista" (https://www.fiddler2.com/fiddler2/version.asp)? – XpiritO

+0

Fiddler puede medir el tiempo que tarda la solicitud en ejecutarse y transferirse al cliente, pero si el sitio es javascript pesado o grande, habrá un retraso adicional mientras el navegador procesa el DOM y javascript. Esto es especialmente cierto para IE6. – driis

+1

"Fiddler no es necesario": D – adpd

Respuesta

6

En caso de que un navegador tenga habilitado JavaScript, una de las cosas que podría hacer es escribir un script en línea y enviarlo primero en su HTML. El script haría dos cosas:

  1. Registre la hora actual del sistema en una variable JS (si tiene suerte, el tiempo podría corresponder aproximadamente al tiempo de inicio de la representación de la página).
  2. Adjunte la función JS al evento page onLoad. Esta función consultará la hora actual del sistema una vez más, restará la hora de inicio del paso 1 y la enviará al servidor junto con la ubicación de la página (o alguna ID única que pueda insertar dinámicamente en el script en línea en su servidor).
<script language="JavaScript"> 
var renderStart = new Date().getTime(); 
window.onload=function() { 
    var elapsed = new Date().getTime()-renderStart; 
    // send the info to the server 
    alert('Rendered in ' + elapsed + 'ms'); 
} 

</script> 

... usual HTML starts here ... 

Se necesitaría para asegurarse de que la página no anula onload más adelante en el código, pero se suma a la lista de controladores de eventos en su lugar.

+0

+1 - Esto suena como el tipo de cosas que actualmente tengo en mente. Es bueno obtener la confirmación de esa línea de pensamiento. ¿Alguien piensa que este es el enfoque equivocado? – adpd

+6

Esto ahora está obsoleto. Fue lo mejor que pudo hacer en 2010, pero en 2012 la mayoría de los navegadores admiten la especificación de tiempo de rendimiento W3C y esa es una forma mucho mejor de obtener esta información. – Ian

+0

Esto no funciona. Mide el tiempo hasta que todo se carga, pero no se procesa. Intenta generar un SVG grande. El evento 'onload' se dispara cuando se conoce el tamaño de la imagen SVG, pero el usuario puede no ver la imagen durante un tiempo hasta que se represente. –

0

En lo que respecta a las técnicas no invasivas, Hammerhead mide el tiempo de carga completo (incluida la ejecución de JavaScript), aunque solo en Firefox.

He visto resultados útiles cuando un fragmento de JavaScript se puede agregar globalmente para medir el inicio y el final de cada operación de carga de página.

0

Eche un vistazo a Selenium - ofrecen un control remoto que puede iniciar automáticamente diferentes navegadores (por ejemplo, IE6), cargar páginas, probar contenido específico en la página. Al final, se generan informes que también muestran los tiempos de renderizado.

0

Dado que otros están publicando respuestas que usan otros navegadores, creo que yo también. Chrome tiene un sistema de perfiles muy detallado que desglosa el tiempo de renderizado de la página y muestra el tiempo que le tomó a cada paso en el camino.

En cuanto a IE, es posible que desee considerar la posibilidad de escribir un complemento. Parece que hay pocas herramientas como esta en el mercado. Quizás podrías venderlo.

+0

Estoy de acuerdo con las (también) "pocas herramientas" en el mercado para IE. Escribir un complemento podría no ser una mala idea. Puedo echarle un vistazo a eso. Gracias por la sugerencia sobre Chrome, pero las máquinas cliente tienen que ejecutar IE6 por el momento, ya que esa es la política de TI corporativa. Cuando se produce una actualización, será IE7 o IE8 seguro. Si tan solo tuviera el lujo de otros navegadores ... – adpd

0

En Firefox puede usar Firebug para controlar el tiempo de carga. Con el complemento YSlow, incluso puede obtener recomendaciones sobre cómo mejorar el rendimiento.

7

El Navigation Timing API está disponible en los navegadores modernos (IE9 +), excepto Safari:

function onLoad() { 
    var now = new Date().getTime(); 
    var page_load_time = now - performance.timing.navigationStart; 
    console.log("User-perceived page loading time: " + page_load_time); 
} 
Cuestiones relacionadas