Объяснение асинхронного трекера Google Analytics - PullRequest
7 голосов
/ 20 сентября 2010

У меня есть сведения о том, как работает Google Async Analytics Tracker.Следующий код используется для инициализации массива команд:

<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(
    ['_setAccount', 'UA-xxxxxxxx-x'],
    ['_trackPageview']
  );
</script>

Теперь это стандартный массив, который заменяется после загрузки кода GA и используется как своего рода очередь, в которой хранятся ваши щелчки.

Моя путаница заключается в том, чтобы задаться вопросом, как эти клики могут быть сохранены, если пользователь щелкает ссылку, которая вызывает перезагрузку (до загрузки JavaScript-кода GA).Если код GA не уловил этот толчок объекта _gaq, то пользователь щелкает ссылку и переходит на новую страницу, этот массив просто инициализируется каждый раз, когда нет?

Не правда ли, что переменная javascript не будет сохраняться при запросах, которые вызывают обновление?Если это так, разве мы не потеряли тот оригинальный клик, который вызвал перезагрузку страницы?

Любое объяснение очень ценится.

Ответы [ 2 ]

5 голосов
/ 21 сентября 2010

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

Во-первых, загрузка ga.js с использованием этого метода - блокировка , а не .

Умно, загрузка ga.js вводится косвенно через JavaScript, а не через жестко заданный тег <script>.Согласно Google Code Blog ,

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

Это означает, что загрузка ga.js происходит неблокирующим образом для большинства современных браузеров (и в качестве преимущества - часть async = "true", в настоящее время поддерживаемая в FF4+, IE10p2 +, Chrome 12+, Safari 5.1 +, формализует эту асинхронизацию).Это незначительно уменьшает время загрузки и слегка снижает вероятность того, что щелчки произойдут до загрузки ga.js.

Преимущество заблаговременного размещения массива _gaq состоит в предотвращении условий гонки;ранее, если вы попытались сделать вызовы GA до загрузки ga.js (скажем, отслеживание событий при воспроизведении видео), это привело бы к ошибке, и вызов Event был бы потерян и никогда не будет восстановлен.Таким образом, пока ga.js в конечном итоге загружается, массив _gaq готов обслуживать все вызовы во время загрузки.

2 голосов
/ 20 сентября 2010

Да.При перезагрузке страницы контексты Javascript отбрасываются, поэтому, если пользователь покидает страницу до загрузки ga.js, эти попадания теряются.Преимущество асинхронной версии GA заключается в том, что она может быть размещена выше на странице, что означает, что вероятность того, что ga.js будет загружен до того, как пользователь уйдет, намного выше.

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