Я немного играю с некоторой неблокирующей загрузкой JavaScript. Это означает, что у меня есть небольшой фрагмент JavaScript в моем head
и загружать все мои внешние файлы во время выполнения. Я даже немного потрудился загружать CSS без блокировки.
Я вижу, что статьи, которые я могу найти, немного устарели, поэтому я хочу знать, все ли это все еще актуально.
Теперь сначала скрипты, они выглядят так:
<script>
(function () {
var styles = JSON.parse(myObject.styles);
for( name in styles ){
var link = document.createElement('link');
link.setAttribute('rel', 'stylesheet');
link.setAttribute('type', 'text/css');
link.setAttribute('href', styles[name]);
document.getElementsByTagName('head')[0].appendChild(link);
}
var scripts = JSON.parse(myObject.scripts);
for( name in scripts ){
var e = document.createElement('script');
e.src = scripts[name];
e.async = true;
document.getElementsByTagName('head')[0].appendChild(e);
}
}());
</script>
myObject.styles
здесь просто объект, который содержит все URL-адреса для всех файлов.
Я выполнил 3 теста, вот результаты:
Обычная настройка
Это обычная настройка, у нас есть 4 css файла в голове и 3 js файла в нижней части страницы.
Теперь я не вижу ничего блокирующего. Я вижу, что все загружается одновременно.
Неблокирующий JS
Теперь, чтобы сделать это немного дальше, я сделал ТОЛЬКО js файлы, не блокирующие. Это с помощью script выше. Я вдруг вижу, что мои файлы css блокируют загрузку. Это странно, потому что в первом примере это ничего не блокирует. Почему css внезапно блокирует нагрузку?
Все неблокирующие
Наконец, я проверил, где все внешние файлы загружаются неблокируемым способом. Теперь я не вижу никакой разницы с нашим первым методом. Они оба выглядят одинаково.
Заключение
Мое заключение состоит в том, что файлы уже загружены неблокируемым способом, я не вижу необходимости добавлять специальные script.
Или я что-то пропустил?
Дополнительно:
- Статья: http://www.yuiblog.com/blog/2008/07/22/non-blocking-scripts/
- Вопрос: Неблокирующие скрипты Javascript, почему бы просто не поставить все сценарии до </body> тег?
- Вопрос: Сохраняют ли современные браузеры параллельные загрузки?
- Код: http://calendar.perfplanet.com/2010/the-truth-about-non-blocking-javascript/
- Код: http://blog.fedecarg.com/2011/07/12/javascript-asynchronous-script-loading-and-lazy-loading/