Почему Google рекомендует помещать асинхронный код Analytics * после * сценариев в <head>? - PullRequest
8 голосов
/ 11 февраля 2011

Почему Google рекомендует помещать js-скрипты перед кодом асинхронного отслеживания аналитики в вашем html?http://code.google.com/apis/analytics/docs/tracking/asyncMigrationExamples.html

Вот цитата:

"Примечание. Чтобы обеспечить максимально упорядоченную работу асинхронного фрагмента по сравнению с другими сценариями, мы рекомендуем размещать другие сценарии на своем сайте.одним из следующих способов: перед фрагментом кода отслеживания в разделе вашего HTML "

Ответы [ 2 ]

4 голосов
/ 11 февраля 2011

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

Теоретически, они могут посоветовать программисту добавить асинхронный фрагмент кода в самый низ.страницы, как последний элемент тела.Однако, чтобы позволить программисту захватывать события пользовательского интерфейса для отправки в аналитику, он хочет сделать переменную _gaq для использования на раннем этапе.Например, у вас может быть кнопка: <button onclick="_gaq.push(...)">Track</button>.Сделав _gaq доступным на раннем этапе, небольшой кусочек кода в асинхронном фрагменте поставит эти сообщения в очередь, а более тяжелый ga.js позже отправит их на сервер.

Теперь некоторые подробности реализации : ga.js загружается путем добавления нового элемента <script> в заголовок документа с установленным атрибутом async.IE и WebKit будут асинхронно загружать теги <script>, вставленные из сценариев.Firefox и Opera будут учитывать атрибут async, а также загружать скрипт асинхронно.В любом случае, ga.js загружается асинхронно, для удобства браузера.

Наконец, после выполнения ga.js без блокировки рендеринга страницы из-за асинхронной загрузки он может выполнить тяжелую работу по сбору всехданных пользователя и любых сообщений в очереди _gaq и отправьте их на сервер.

Сводка: Этот подход использует небольшой встроенный скрипт, который инициализирует некоторые ключевые переменные, такие как _gaqчто ваша страница может получить доступ до того, как будет готов полный скрипт ga.js.Этот небольшой скрипт также динамически добавляет тег <script src="ga.js"> к документу таким образом, что большинство браузеров загружают и выполняют его асинхронно, не блокируя отображение страницы или оценку критических сценариев.

2 голосов
/ 11 февраля 2011

Когда браузер загружает страницу, он делает это сверху вниз. Браузеры имеют ограниченное количество «соединений», которые можно использовать для загрузки внешних ссылок на документы. Если вы поместите их сценарий выше вашего, ваши собственные сценарии могут не загружаться, пока они не будут завершены. Аналитический код не критичен для функциональности страницы, поэтому мы можем сохранить его до последнего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...