Me dijeron que document.write debe evitarse en la página web ya que daña el rendimiento de la página web. ¿Pero cuál es la razón exacta?¿Por qué document.write daña el rendimiento web?
Respuesta
document.write()
en sí no parece ser muy perjudicial para el rendimiento de la página en la mayoría de los navegadores. De hecho, ejecuté algunas pruebas en DHTML Kitchen y encontré que en Firefox, Opera y Chrome, document.write() era más rápido en la primera carga y comparable en velocidad de HTML estándar en renovaciones posteriores. Internet Explorer 8 fue la excepción, pero en realidad fue más rápido que los otros navegadores al procesar el HTML (sorprendentemente).
Como Guffa's answer señala, y lo que estaba haciendo, los problemas de rendimiento reales provienen de los propios scripts en línea. La representación de contenido solo puede continuar cuando un script en línea ha terminado de ejecutarse, de modo que si tiene una rutina compleja dentro de un script en línea, puede detener notablemente la carga de su página para el usuario final. Es por eso que se espera onload
/DOMReady
y se prefiere el uso de DOM.
Es especialmente imprudente utilizar document.write() después de que el documento haya terminado de cargarse. En la mayoría de los navegadores, usar document.write() después de cargar el documento también implica document.open(), que borrará el HTML actual de la pantalla y creará un nuevo documento.
Eso no significa que document.write() no tiene sus aplicaciones, es solo que la mayoría de los desarrolladores lo usan por las razones equivocadas. problemas reales con document.write() incluyen:
- No se puede utilizar en los documentos sirven como XHTML (para los navegadores que analizar correctamente XHTML como XHTML).
- Sobrescribe toda la página cuando se utiliza después de que el análisis DOM haya finalizado.
- Agrega contenido a la página a la que los navegadores no pueden acceder con JavaScript deshabilitado (aunque
<noscript>
a veces es una solución válida aquí). - Más difícil de mantener que el HTML estático.
Si tiene scripts que se ejecutan en el medio de la página, el navegador tiene que esperar a que la secuencia de comandos finalice antes de poder continuar el análisis del resto de la página.
Para hacer que su página aparezca rápidamente, desea que el navegador analice la página lo antes posible para que se pueda mostrar al usuario, y luego puede aplicar la funcionalidad adicional que agregan sus secuencias de comandos.
Creo que hay alguna razón por la que se debe evitar.
pero lo que quiere decir es, que si tiene algún lugar en el código HTML de una
<script>
document.write('mystuff')
</script
uno de los problemas es que bevore el navegador puede mostrar su sitio web, se tiene que cargar el Javascript Interprete. si desea iniciar su javascript solamente por body.onload entonces se puede mostrar toda la página web para el usuario, y ejecute el javascript, por lo tanto ...
el tiempo de carga subjetiva es más rápido :-)
- 1. ¿Sass daña el rendimiento?
- 2. ¿Por qué usar document.write?
- 3. ¿Qué daño está hecho por document.write()?
- 4. Preguntas sobre el método Document.write
- 5. ¿Por qué esto mejora el rendimiento?
- 6. ¿Qué significa esto: "document.write ('<scr' + 'ipt ..."?
- 7. Usar "CASE" en la cláusula WHERE para elegir varias columnas daña el rendimiento
- 8. document.write Invocación()
- 9. ¿Por qué el orden de JIT afecta el rendimiento?
- 10. ¿Por qué está llamando a ReadConsole en un bucle que daña la pila?
- 11. Document.write in Clojurescript?
- 12. JQuery $ (documento) .ready() y document.write()
- 13. ¿Por qué esta optimización de Lua hack mejoraría el rendimiento?
- 14. .NET: ThreadStatic vs lock {}. ¿Por qué ThreadStaticAttribute degrada el rendimiento?
- 15. ¿Por qué la transferencia de archivos multiproceso mejora el rendimiento?
- 16. ¿Por qué este circuito Parallel.ForEach no mejora el rendimiento?
- 17. ¿Por qué no se agregó el rendimiento a C++ 0x?
- 18. Entity Framework + MySQL - ¿Por qué el rendimiento es tan terrible?
- 19. ¿Por qué necesitamos web-sockets?
- 20. ¿por qué el marco web lift es escalable?
- 21. Mejore el rendimiento de webView (debería ser el mismo rendimiento que el navegador web nativo)
- 22. ¿Por qué dividir la etiqueta <script> al escribirla con document.write()?
- 23. Escribir XML en el archivo daña los archivos en python
- 24. ¿Por qué necesitamos servicios web RESTful?
- 25. ¿Cómo establecer el rendimiento de desplazamiento para la vista web?
- 26. HTML5 Doctype daña las alturas DIV?
- 27. ¿Cuáles son las alternativas a document.write?
- 28. IIS Web gardens y rendimiento
- 29. ¿Qué tan importante es el sprint para el rendimiento en un sitio web de alto tráfico?
- 30. ¿Cuándo se debe usar .innerHTML y cuando document.write en JavaScript
Debo añadir que cada vez que se inserta un HTML nuevo a través de document.write() se vuelve a analizar toda la página, y toda la cascada de CSS y todo lo demás. – Robusto
Esto cuenta para cualquier script, no solo 'document.write'. –
@Robusto: Hm ... Toda la página no se puede analizar nuevamente. Como 'document.write' se usa mientras se analiza la página, el análisis aún no está completo ... – Guffa