Мне говорят, что document.write следует избегать на веб-странице, так как это ухудшает производительность веб-страницы. Но какая именно причина?
Почему document.write повреждает веб-производительность?
Ответ 1
document.write()
сам по себе не кажется очень вредным для производительности страницы в большинстве браузеров. Фактически, я провел несколько тестов на DHTML Kitchen и обнаружил, что в Firefox, Opera и Chrome document.write() был на самом деле быстрее на первая загрузка и сопоставимая по скорости стандартного HTML при последующих обновлениях. Internet Explorer 8 был исключением, но на самом деле он был быстрее, чем другие браузеры при визуализации HTML (удивительно).
Как ответ Guffa указывает, и то, что я собираю, фактические проблемы производительности возникают из встроенных скриптов. Контент-рендеринг может продолжаться только после завершения встроенного script, поэтому, если у вас есть сложная процедура внутри встроенного script, вы можете заметно остановить загрузку своей страницы для конечного пользователя. Поэтому предпочтительнее ждать onload
/DOMReady
и использовать DOM-манипуляцию.
Это особенно неразумно использовать document.write() после завершения загрузки документа. В большинстве браузеров с помощью document.write() после загрузки документа также подразумевается document.open(), который вытеснит текущий HTML с экрана и создаст новый документ.
Это не значит, что document.write() не использует его, это просто, что большинство разработчиков используют его по неправильным причинам. Реальные проблемы с document.write() включают в себя:
- Вы не можете использовать его в документах, которые используются как XHTML (для браузеров, которые правильно анализируют XHTML как XHTML).
- Заменяет всю страницу при ее использовании после завершения разбора DOM.
- Добавляет контент на страницу, недоступную для браузеров с отключенным JavaScript (хотя
<noscript>
иногда является допустимым обходным решением здесь). - Сложнее поддерживать, чем статический HTML.
Ответ 2
Если у вас есть сценарии, которые запускаются в середине страницы, браузер должен дождаться завершения script, прежде чем он сможет продолжить анализ оставшейся части страницы.
Чтобы ваша страница отображалась быстро, вы хотите, чтобы браузер как можно скорее проанализировал страницу, чтобы она могла отображаться пользователю, и после этого вы можете применить дополнительную функциональность, добавляемую вашими сценариями.
Ответ 3
Я думаю, есть некоторые причины, по которым его следует избегать.
но вы имеете в виду, что если у вас есть где-то в вашем html-коде,
<script>
document.write('mystuff')
</script
одна из проблем заключается в том, что браузер может отображать ваш сайт, он должен загрузить интерпретатор Javascript. если вы начнете свой javascript только по body.onLoad, тогда он сможет отобразить весь сайт для пользователя, а затем запустить ваши javascripts... Поэтому
время субъективной загрузки быстрее: -)