Да, вы правы, если пользователь покидает сайт до того, как 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 готов обслуживать все вызовы во время загрузки.