Javascript блокирует загрузку контента на ваш сайт во время страницы

StackOverflow https://stackoverflow.com/questions/658599

  •  20-08-2019
  •  | 
  •  

Вопрос

Это лучший способ включить JavaScript на вашем сайте? http://www.webdigi.co.uk/blog/2009/avoid-javascript-blocking-content-download-on-your-website-during-page-load/

Это было полезно?

Решение

Лучший способ включить JavaScript на вашем веб-сайте - это включить как можно меньше файлов на конце страницы * после загрузки всей разметки и других ресурсов. Такое действие также дает дополнительное преимущество, заключающееся в поощрении & Квоты; прогрессивное улучшение < !> Quot; Модель развития.

* Yahoo активно тратит огромные деньги на исследование этого вопроса, и у него есть преданные, работающие полный рабочий день люди (включая блестящего Стива Соудерса), которые публикуют свои результаты онлайн и в форме книги .

Другие советы

Это не похоже на ситуацию, подходящую для всех, поэтому я часто прибегаю к этой знаменитой статье, чтобы помочь мне ответить на такие вопросы:

http://developer.yahoo.com/performance/rules.html

Это было упомянуто в одном из подкастов, но если вы разместите javascript в отдельном домене или даже поддомене, браузер может открыть больше соединений и загрузить как js, так и остальную часть страницы на в то же время. Вот почему многие люди предпочитают ссылаться на экземпляр jQuery от Google, а не на свой собственный. Этот пример также имеет преимущества для кэширования, но основной принцип сохраняется.

В двух словах, в статье говорится о том, чтобы динамически подключать <script> узлы в DOM для параллельной загрузки файлов сценариев. Это работает и ничего нового.

Однако в нем не упоминается самый большой недостаток метода: хотя скрипты будут загружаться параллельно, порядок их исполнения не является детерминированным. IE выполнит их в том порядке, в котором они заканчивают загрузку, тогда как Firefox выполнит их в том порядке, в каком они подключены в DOM.

Это проблема. Например, скажем, сценарий A и сценарий B добавляются с использованием этой техники. Теперь представьте, что скрипт A - это jQuery, а скрипт B делает это:

$(document).ready(function(){...})

В IE вы облажались, если по какой-либо причине (например, сетевой трафик, потеря кэша) скрипт B заканчивает загрузку до скрипта A, потому что он будет выполнен до загрузки jQuery.

См. эту статью. для лучшего объяснения.

ответ Рекса М - это путь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top