Почему Google Analytics построен так, как он есть?

#javascript #google-analytics

#javascript #google-analytics

Вопрос:

код Google для вставки Google Analytics:

http://www.google.com/support/analytics/bin/answer.py?answer=174090

 <script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXX-X']);
  _gaq.push(['_trackPageview']);

  (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);
  })();

</script>
 

зачем просто вставлять прямой код:

 <script type="text/javascript" async="true" src="https://www.google-analytics.com/ga.js">
<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXX-X']);
  _gaq.push(['_trackPageview']);
</script>
 

Заранее спасибо,

Комментарии:

1. ? Я не понимаю, что вы пытаетесь спросить.

2. потому что ваш почему они не делают это таким образом, код неправильный, использует www вместо ssl 🙂

3. @Yosef — вам нужна дополнительная информация здесь? Я считаю, что на вопрос был дан ответ

Ответ №1:

Они указывают причину, по которой они используют асинхронный фрагмент в том документе, который вы связали:

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

Комментарии:

1. я спрашиваю, почему бы не вставить непосредственно местоположение скрипта, а не почему асинхронный

2. @Yosef это то же самое. Косвенная вставка приводит к асинхронному вводу во многие браузеры, которые явно не поддерживают этот async атрибут. Протокол является его частью, но это более важно. В противном случае они могли бы просто сделать <script src="//www.google-analytics.com/ga.js</script> , и он загрузился бы с использованием соответствующих протоколов.

Ответ №2:

Это делается таким образом, чтобы он мог загружать js-файл, используя правильный протокол (http:// или https://)

Ответ №3:

Код GA представляет собой универсальный фрагмент для включения скрипта на каждой странице с использованием соответствующего протокола. Страницы, обслуживаемые по протоколу https, загружают скрипт GA по защищенному соединению. Страницы в других протоколах обслуживаются по обычному протоколу (http).

Значительная часть кода показана ниже:

 ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www')   '.google-analytics.com/ga.js';
 

Эквивалентно:

 if ('https:' == document.location.protocol) {
    ga.src = 'https://ssl.google-analytics.com/ga.js';
} else {
   ga.src = 'http://www.google-analytics.com/ga.js';
}
 

Комментарии:

1. но если я программист, я могу сделать код, который я предлагаю, правильно?

2. @Yosef Если вы управляете большим веб-сайтом, где страницы обслуживаются как по защищенным (HTTPS), так и по обычным соединениям, исходный код — лучший способ. Если вы на 10000% уверены, что никогда не собираетесь использовать https, ваш предлагаемый код также является вариантом.

Ответ №4:

Потому что им нужно убедиться, что у них правильный протокол. Они должны обмениваться данными по протоколу HTTPS, когда отслеживаемая страница передается по протоколу HTTPS.

Комментарии:

1. так что я могу также указать URL-адрес https, если моя страница через http

2. Если вы чувствуете себя нормально, заходя на каждую страницу, которая у вас есть, и определяя, используете ли вы http или https на этой странице, я не против. Я добавлю это на страницу своего шаблона один раз и никогда больше не буду смотреть на него.

Ответ №5:

Я знаю, что если IE загружает контент через соединение https ssl, он не будет загружать ничего связанного через http, поэтому ваш код отслеживания никогда не будет загружен.