Править: В то время как этот вопрос задали и ответили прежде (1), (2), (3), ответы не упомянули возможность использования асинхронного и / или ленивая загрузка когда включая файлы в . Мне предложили задать вопрос из-за аналитики Google новый код, который использует оба из этих методов.
Я недавно заметил, что аналитика Google теперь предлагает включая ее отрывок JavaScript прямо перед тег. Они раньше предлагали включая отрывок прямо перед
тег.
Лучшие практики YUI для Ускорения Вашего веб-сайта предлагают поместить сценарии максимально далеко ниже на страницу, так как сценарии могут заблокировать параллельные загрузки:
Проблема, вызванная сценариями, состоит в том, что они блокируют параллельные загрузки. Спецификация HTTP/1.1 предлагает, чтобы браузеры загрузили не больше, чем два компонента параллельно на имя хоста. При обслуживании изображений от нескольких имен хостов можно заставить больше чем две загрузки происходить параллельно. В то время как сценарий загружает, однако, браузер не запустит никакие другие загрузки, даже на различных именах хостов.
Google говорит:
Одно из основных преимуществ асинхронного отрывка - то, что можно расположить его наверху документа HTML. Это увеличивает вероятность, что маяк отслеживания будет отправлен, прежде чем пользователь оставляет страницу. Это обычно для размещения кода JavaScript в
раздел, и мы рекомендуем поместить отрывок у основания
раздел для лучшей производительности.
Я обычно более обеспокоен пользовательским опытом и скоростью под нагрузкой страницы, чем проверка, что каждый маяк отслеживания отправляется, таким образом, это продвинуло бы меня к включению сценария аналитики Google к концу страницы, вместо в , право?
Я уверен, что существует больше вещей рассмотреть, чем эти две точки зрения. Что вещи влияют на Вас? Что состоят в том, чтобы рассмотреть вещи?
Так, что является за и против имения Вашего права сценариев berfore по сравнению с прямо прежде
?
Совет относительно
- не СВЯЗАТЬСЯ НА ВНЕШНИЕ скрипты, которые необходимо загрузить. Это блокирует параллельные загрузки. Новейший код отслеживания Google использует отложенную загрузку и не блокирует параллельные загрузки.
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
Помещение скриптов в
заставит браузер загружать файлы до того, как он отобразит страницу, и заблокирует параллельные загрузки. Если вы разместите свои скрипты прямо перед тегом
, браузер будет анализировать их после вашего контента, что должно привести к более быстрой загрузке страницы.
Используя самоисполняющуюся анонимную функцию с async = true
, вы не блокируете параллельную загрузку.
Для действительно сложных приложений с модальными окнами недостаток размещения скрипта прямо перед
будет, если вам нужно скрыть модальное окно, если JS включен.
<head>
<script>document.documentElement.className+='js';</script>
<style>html.js #modal { display:none; }</style>
</head>
Если приведенный выше фрагмент был размещен перед
, он не будет проанализирован сразу же, как если бы он был в заголовке. Могут быть определенные случаи и несоответствия с точки зрения времени готовности dom, которые вы также можете заметить.
Связанный вопрос: Где я должен декларировать файлы JavaScript, используемые на моей странице? В или рядом ?
Я предполагаю, в дополнение к тому, что до сих пор говорили другие люди, чтобы аналитика могла более точно отслеживать посещения. Иногда кто-то заходит на сайт и уходит до того, как загрузится вся страница. Если они это сделают, вероятность того, что они загрузили код отслеживания, выше, если он находится ближе к верху страницы. Это должно помочь тем, кто анализирует статистику, увидеть показатель отказов. Если вы заметили, что у вас высокий показатель отказов (а время на странице мало), это может указывать на то, что ваша страница занимает слишком много времени для большинства аудиторий, и должно предупредить вас о том, что нужно сделать что-то, чтобы ускорить загрузку вашей страницы.