2009-07-02 22 views
11

He leído que Firefox 3.5 tiene una nueva característica en su parser?¿Qué es el análisis especulativo?

Mejoras en el motor Gecko diseño , incluyendo el análisis especulativo para la representación de contenido más rápido.

Podría explicar eso en términos simples.

Respuesta

24

Es todo que ver con la entrada en Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=364315

En esa entrada, Anders Holbøll sugirió:

Parece que cuando se enfrentan a una etiqueta de secuencia de comandos, que hace referencia a un archivo externo, el navegador no intenta cargar ningún elemento después de la secuencia de comandos hasta se cargan los archivos de script externos. Esto hace que los sitios, que hacen referencia a varios o grandes archivos javascript, se ralenticen.
...
Aquí file1.js se cargará primero, seguido secuencialmente por file2.js. Luego img1.gif, img2.gif y file3.js se cargarán al mismo tiempo. Cuando file3.js tiene cargado por completo, se cargará img3.gif.

se podría argumentar que, dado que el JS-archivos podrían contener, por ejemplo una línea como "document.write('<!--');", no hay forma de saber si cualquiera de los contenidos siguiendo una etiqueta script vez habrá espectáculo, antes del script ha sido ejecutado.

Pero supongo que es mucho más probable que el contenido se muestre que no. Y en estos días es bastante común que las páginas hagan referencia a muchos archivos externos de JavaScript (ajax-libraries, statistics y advertising), que con el comportamiento actual ocasiona que la carga de la página se serialice.

En esencia, el analizador html continúa leyendo el archivo html y cargando los enlaces de referencia, incluso si está bloqueado debido a un script.

Se llama "especulativo" porque la secuencia de comandos puede hacer cosas como establecer parámetros css como "display: none" o comentar secciones del siguiente html, y al hacerlo, hacer innecesarias cargas certificadas ... Sin embargo, en el 95% caso de uso, la mayoría de las referencias se cargarán, por lo que el analizador generalmente adivina correctamente.

+0

Hmm, me pregunto por qué esta pregunta recibió tanta atención de repente ... – Stobor

+3

http://samsaffron.com/archive/2012/02/17/stop-paying-your-jquery-tax recibió atención a través de HackerNews y contiene un enlace a esta pregunta. Al menos, así es como llegué aquí. – vinod

+1

Llegué aquí porque Stack Overflow es mi periódico. –

3

Creo que significa que cuando el navegador normalmente bloquearía (por ejemplo, para una etiqueta de script), continuará analizando el HTML. No creará un DOM real hasta que se carguen las piezas faltantes, pero comenzará a recuperar los archivos de script y las hojas de estilo en el fondo.

Cuestiones relacionadas