Поместить таблицы стилей вверху Ссылки на обсуждение
Во время исследования производительности в Yahoo !, мы обнаружили, что перемещение таблиц стилей в документ HEAD делает страницы загружаемыми быстрее. Это связано с тем, что размещение таблиц стилей в заголовке позволяет странице отображаться постепенно.
Внешние инженеры, которые заботятся о производительности, хотят, чтобы страница загружалась постепенно; то есть мы хотим, чтобы браузер отображал любой контент, который у него есть, как можно скорее. Это особенно важно для страниц с большим количеством контента и для пользователей, использующих медленные интернет-соединения. Важность предоставления пользователям визуальной обратной связи, такой как индикаторы прогресса, была хорошо исследована и задокументирована. В нашем случае HTML-страница является индикатором прогресса! Когда браузер последовательно загружает страницу, заголовок, панель навигации, логотип сверху и т. Д. Служат визуальной обратной связью для пользователя, ожидающего страницу. Это улучшает общее впечатление пользователя.
Проблема с размещением таблиц стилей в нижней части документа заключается в том, что он запрещает прогрессивную визуализацию во многих браузерах, включая Internet Explorer. Эти браузеры блокируют рендеринг, чтобы избежать необходимости перерисовывать элементы страницы при изменении их стилей. Пользователь застрял, просматривая пустую белую страницу.
В спецификации HTML четко указано, что таблицы стилей должны быть включены в HEAD страницы: «В отличие от A, [LINK] может появляться только в разделе HEAD документа, хотя может появляться любое количество раз». Ни одна из альтернатив, чистый белый экран или вспышка не стилизованного контента, не стоит риска. Оптимальным решением является следование спецификации HTML и загрузка таблиц стилей в документ HEAD.
Поместить сценарии внизу
Проблема, вызванная скриптами, заключается в том, что они блокируют параллельные загрузки. Спецификация HTTP / 1.1 предполагает, что браузеры загружают не более двух компонентов параллельно для каждого имени хоста. Если вы обслуживаете свои изображения с нескольких имен хостов, вы можете получить более двух загрузок параллельно. Однако во время загрузки скрипта браузер не будет запускать другие загрузки, даже на разных именах хостов.
В некоторых ситуациях нелегко переместить сценарии в конец. Если, например, сценарий использует document.write для вставки части содержимого страницы, его нельзя переместить ниже на странице. Также могут быть проблемы с областями видимости. Во многих случаях есть способы обойти эти ситуации.
Альтернативное предложение, которое часто возникает, - использовать отложенные сценарии. Атрибут DEFER указывает, что сценарий не содержит document.write и является подсказкой для браузеров, что они могут продолжить рендеринг. К сожалению, Firefox не поддерживает атрибут DEFER. В Internet Explorer сценарий может быть отложен, но не настолько, как хотелось бы. Если скрипт можно отложить, его также можно переместить в нижнюю часть страницы. Это ускорит загрузку ваших веб-страниц.