Google está equivocado acerca de aplazar?

En este post:

¿Por qué google utiliza el término "JavaScript de bloqueo de procesamiento"?

@ jaffa-the-cake pregunta en un comentario a alguien:

"¿Qué documentación consideras incorrecta?"

Tomemos por ejemplo esta documentación:

https://developers.google.com/speed/docs/insights/BlockingJS

Y ahora tomemos por ejemplo lo que dicen sobre "diferir":

La carga y ejecución de scripts que no son necesarios para el renderizado inicial de la página pueden diferirse hasta después de que el renderizado inicial u otras partes críticas de la página hayan terminado de cargarse. Hacerlo puede ayudar a reducir la contención de recursos y mejorar el rendimiento.

Tenga en cuenta que el artículo trata sobre "Eliminar JavaScript que bloquea el procesamiento", por lo que con la palabra "puede" significa que PODRÍA usar aplazar.

Con "aplazar" en una etiqueta de script, NO aplazará "la ejecución hasta después de que el renderizado inicial de la página haya terminado de cargarse". Puede ser el caso, pero no necesariamente.

"Aplazar" aplazará la ejecución hasta que el html inicial esté en el DOM, pero eso es algo diferente a "render". La ejecución tendrá lugar después de que el html (anterior) esté en el DOM y antes de DOMContentLoaded, pero eso no significa: "el procesamiento de la página ha terminado de cargarse". Sería correcto si utilizaran el término "el análisis html de la página ha finalizado".

Un ejemplo que confirma la teoría de arriba:

INDEX.HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Test</title>
</head>
<body>
    Some HTML line and this is above the fold
    <script src="script.js" defer></script>
</body>
</html>

SCRIPT.JS (del caché!)

// Synchronous delay of 5 seconds
var timeWhile = new Date().getTime(); 
while( new Date().getTime() - timeWhile < 5000 );

En caso de que el navegador tome script.js del caché, se mostrará "¡Alguna línea HTML y esto está por encima del pliegue" DESPUÉS de 5 segundos! Eso significa que el renderizado inicial de la página NO ha terminado de cargarse todavía (mientras usa diferir). Entonces, en mi opinión, eso significa que la documentación es incorrecta.

PD. Sin script.js del caché, un navegador tendrá tiempo para finalizar la representación del html anterior. El archivo script.js primero tiene que descargarse, así que eso es lo que le da al navegador tiempo adicional. Con el almacenamiento en caché, hay menos tiempo entre "terminar el análisis html" y comenzar con la "ejecución de javascript", por lo que existe la posibilidad de que la "ejecución de javascript" ya comience antes de "finalizar la representación del html anterior". Entonces, en caso de ganancia de velocidad, incluso podría considerar en este ejemplo deshabilitar el almacenamiento en caché, por lo que la representación del html anterior será más rápida.

Tengo muchas más pruebas / ejemplos que prueban que otras partes en otra documentación (sobre la representación) de Google son incorrectas (en mi opinión), pero lo dejaré claro en esta publicación usando 1 ejemplo.

Si no está de acuerdo conmigo, no solo dé una reputación negativa, sino al menos haga un comentario sobre por qué cree que es incorrecto y qué prueba realizó para confirmarlo. Ya estoy tratando de convencer a algunas personas en Google de que son incorrectas en mi opinión, pero eso les ofende un poco. Por supuesto, no diría que son incorrectos si no puse mucho tiempo / energía / pruebas en ello y si estuviera bastante seguro de ello. Hasta ahora me están diciendo: "considera que el malentendido puede ser tuyo", así que me siento como un niño pequeño "luchando" contra una gran pared. Para mí, no se trata de acertar en primer lugar, pero veo a muchas personas a mi alrededor (ya llevan muchos años trabajando en TI) que luchan con la representación del tema y puedo entenderlo, porque la documentación al respecto es muy confuso. Esa es también la razón por la que me sumergí más en él, porque también se estaba volviendo demasiado confuso para mí, por lo que quería entenderlo mejor. Y si estoy equivocado, solo convénceme con argumentos y soy el primero que dirá que estaba equivocado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta