2012-02-09 9 views
6

Tengo una página (A) que es una pesada página de JavaScript, cuando salgo de esta página para ir a la página B, lleva mucho tiempo. Cuando voy a la página B desde una página diferente, es realmente rápido. Por lo tanto, tiene algo que ver con la página A y probablemente su javascript.Gap de página Javascript pesado de 15 segundos entre la respuesta y la carga de la página

Cuando ejecuto el generador de perfiles de red desde las herramientas de desarrollador en IE 9 muestra un espacio de ~ 15 segundos entre la respuesta y DomContentLoaded (evento).

La página A está cargada de javascript porque ejecuta Xopus Editor, un editor de texto enriquecido XML.

¿Alguien tiene alguna idea sobre lo que podría hacer para analizar la brecha en cuanto a lo que sucede o lo que podría hacer para que la página A descargue más rápido.

+0

Ver también: http: // stackoverflow.com/questions/855126 –

+0

Gracias por la sugerencia, revisé el javascript y no parece que las llamadas tarden mucho tiempo. Parece que la recolección de basura en IE o algo así. FF y Chrome responden rápidamente. –

+0

¿Solo ocurre con una página B específica? – user123444555621

Respuesta

2

Esta es una posibilidad remota, ya que hay alrededor de mil cien cosas mal con él, pero podría ser un lugar para comenzar. Añadir esta etiqueta script a su página que el último de ellos:

<script> 
    function unloadJS() { 
     var scripts = document.getElementsByTagName("SCRIPT"); 
     for (var index = 0; index < scripts.length - 1; index++) 
     { 
     var file = scripts[index].getAttribute("src"); 
     var start = +new Date(); 
     scripts[index].parentNode.replaceChild(document.createElement('script'), 
               scripts[index]); 
     var elapsed = +new Date() - start; 
     alert(file + ": " + elapsed.toString()); 
     } 
     return false; 
    } 
</script> 

Este código intenta forzar la descarga de cada uno de los archivos JavaScript que se cargaron en la página, informando de la cantidad de tiempo que toma para que caigan en milisegundos. Despedir a esto como es conveniente, es decir, en la descarga o con un botón:

<button onclick="return unloadJS()">Go!</button> 

Esto podría no funcionar/le dirá lo que necesita saber porque el IE podría negarse a hacer la recolección de basura cuando se desconecta el guión. Esto podría ser porque IE realmente no los descarga cuando haces esto, o simplemente porque IE - bueno, lo que oddi dijo :)

En cualquier caso, esto no es una solución; no importa cuándo se descarga el JS, la recolección de basura aún lleva la misma cantidad de tiempo. Esto es solo un intento de un primer diagnóstico, como usted pidió. Espero que funcione/ayude ...

0

Tal vez esté utilizando una biblioteca Javascript como PrototypeJS que enganche en el evento unload y cuando la página se descargue, recorre una matriz eliminando todos los detectores de eventos para todos los elementos DOM en la pagina. Si sabemos qué bibliotecas está utilizando, podríamos simular una llamada para descargar la página y obligar a la biblioteca a ejecutar su función de descarga. Luego, inicie un temporizador para ver cuánto demora cargar otra página.

2

IE sucks. Pero hay varias herramientas para perfilar su página.

Fiddler o HttpWatch es una buena herramienta para analizar su línea de tiempo de solicitud y ver si tarda mucho tiempo en descargar todo su pesado código de javascript. A menudo es la principal causa de ralentizar una página heavey js. Desde IE doesn't take parallel downloading js very well, cuesta más tiempo para cientos de pequeños archivos javascript.

Para este caso, pruebe minifying your javascript. Es la forma más directa de mejorar el rendimiento de carga de la página.

Si no ayuda mucho. Es posible que necesite YSlow para analizar un rendimiento detallado. Aunque no se ajusta a IE, solucionar algunos problemas en Chrome o FF puede afectar el rendimiento en IE.

Agregue un registro en su consola, reduzca el alcance tal vez pueda encontrar el problema de rendimiento de ejecución.

Cuestiones relacionadas