<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>网站分析 Web Analytics &#187; 异步跟踪</title>
	<atom:link href="http://www.webanalytics.org.cn/tag/%e5%bc%82%e6%ad%a5%e8%b7%9f%e8%b8%aa/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.webanalytics.org.cn</link>
	<description>专注于网站分析工具、网站分析方法与网站分析实践</description>
	<lastBuildDate>Fri, 25 Jun 2010 05:55:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Google Analytics推出异步跟踪</title>
		<link>http://www.webanalytics.org.cn/google-analytics-launches-asynchronous-tracking/</link>
		<comments>http://www.webanalytics.org.cn/google-analytics-launches-asynchronous-tracking/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 05:50:22 +0000</pubDate>
		<dc:creator>深蓝</dc:creator>
				<category><![CDATA[新闻资讯]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[异步跟踪]]></category>

		<guid isPermaLink="false">http://www.webanalytics.org.cn/?p=271</guid>
		<description><![CDATA[从12月1日开始，Google Analytics推出了异步跟踪的方式，用户可以在同步跟踪与异步跟踪之间选择。异步的跟踪方式具有以下优点：
<ol>
	<li>跟踪代码的加载速度更快，改善浏览器的执行效率</li>
	<li>增强数据收集的准确性</li>
	<li>消除因为JavaScript未完全加载引起的误差</li>
</ol>
下面是异步跟踪的代码：
<pre>&#60;script type="text/javascript"&#62;

  var _gaq = _gaq &#124;&#124; [];
  _gaq.push(['_setAccount', 'UA-XXXXX-X']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script');
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
        'http://www') + '.google-analytics.com/ga.js';
    ga.setAttribute('async', 'true');
    document.documentElement.firstChild.appendChild(ga);
  })();

&#60;/script&#62;</pre>]]></description>
			<content:encoded><![CDATA[<p>从12月1日开始，Google Analytics推出了异步跟踪的方式，用户可以在同步跟踪与异步跟踪之间选择。异步的跟踪方式具有以下优点：</p>
<ol>
<li>跟踪代码的加载速度更快，改善浏览器的执行效率</li>
<li>增强数据收集的准确性</li>
<li>消除因为JavaScript未完全加载引起的误差</li>
</ol>
<p>下面是异步跟踪的代码：</p>
<pre>&lt;script type="text/javascript"&gt;

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

  (function() {
    var ga = document.createElement('script');
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
        'http://www') + '.google-analytics.com/ga.js';
    ga.setAttribute('async', 'true');
    document.documentElement.firstChild.appendChild(ga);
  })();

&lt;/script&gt;</pre>
<p>这段代码最开始，在JavaScript中分配了一个变量名为_gap的数组。紧接着，在下面两行把两个API的调用放入了这个数组中。当跟踪代码初始化时，会将_gap从一个标准的数组转化成一个新的对象，然后执行之前放入的API调用。通过这个特性，你可以在跟踪代码被下载前，先将API调用准备好，而不用担心Race Condition（因为多线程执行造成的紊乱）。</p>
<p>第二部分代码会并发的加载跟踪代码。这部分代码在一个匿名的方法中执行，它会建立一个新的Script标签并且通过合适的协议引用跟踪代码。这样做，可以减少页面加载的时间。注意这里很前卫的使用了HTML5中新的“async”标记，它会告诉浏览器这段JavaScript代码可以异步的方式来加载。Firefox3.6是第一款支持这个特性的浏览器。如果与疑问，可以参考<a id="fl-v" title="HTML 5 async specification" href="http://www.whatwg.org/specs/web-apps/current-work/#attr-script-async" target="_blank">HTML5 async specification</a>。</p>
<p>跟踪代码一旦被加载，会将_gap数组转化为一个<a title="Analytics _gaq object" href="http://code.google.com/apis/analytics/docs/gaJS/gaJSApi_gaq.html" target="_blank">Analytics _gaq 对象</a>。这个对象会包装底层的_gap对象，并执行所有的命令，向Google Analytics发送数据。你页面上的代码甚至可以忽略这个事实，因为_gap.push这个语法可以在任何时候使用。在<a id="beu5" title="Asynchronous Tracking Usage Guide" href="http://code.google.com/apis/analytics/docs/tracking/asyncUsageGuide.html" target="_blank">Asynchronous Tracking Usage Guide</a>可以获得详细信息。</p>
<p>这种新的跟踪方式现在处于Beta测试，所有Google Analytics的账户都可以使用。</p>
<p>一个完整的例子：</p>
<pre style="font-family: monospace; color: #007000; font-size: 9pt; background-color: #fafafa; line-height: 15px; margin-top: 1em; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; overflow-x: auto; overflow-y: auto; word-wrap: break-word; padding: 0.99em; border: 1px solid #bbbbbb;"><span style="color: #000088;">&lt;html&gt;</span><span style="color: #000000;">

</span><span style="color: #000088;">&lt;head&gt;</span><span style="color: #000000;">
  </span><span style="color: #000088;">&lt;script</span><span style="color: #000000;"> </span><span style="color: #660066;">type</span><span style="color: #666600;">=</span><span style="color: #008800;">"text/javascript"</span><span style="color: #000088;">&gt;</span><span style="color: #000000;">
    </span><span style="color: #000088;">var</span><span style="color: #000000;"> _gaq </span><span style="color: #666600;">=</span><span style="color: #000000;"> _gaq </span><span style="color: #666600;">||</span><span style="color: #000000;"> </span><span style="color: #666600;">[];</span><span style="color: #000000;">
    _gaq</span><span style="color: #666600;">.</span><span style="color: #000000;">push</span><span style="color: #666600;">([</span><span style="color: #008800;">'_setAccount'</span><span style="color: #666600;">,</span><span style="color: #000000;"> </span><span style="color: #008800;">'UA-XXXXX-X'</span><span style="color: #666600;">]);</span><span style="color: #000000;">
    _gaq</span><span style="color: #666600;">.</span><span style="color: #000000;">push</span><span style="color: #666600;">([</span><span style="color: #008800;">'_trackPageview'</span><span style="color: #666600;">]);</span><span style="color: #000000;">
  </span><span style="color: #000088;">&lt;/script&gt;</span><span style="color: #000000;">
</span><span style="color: #000088;">&lt;/head&gt;</span><span style="color: #000000;">

</span><span style="color: #000088;">&lt;body&gt;</span><span style="color: #000000;">
  </span><span style="color: #000088;">&lt;p&gt;</span><span style="color: #000000;">Page Content</span><span style="color: #000088;">&lt;/p&gt;</span><span style="color: #000000;">

  </span><span style="color: #000088;">&lt;script</span><span style="color: #000000;"> </span><span style="color: #660066;">src</span><span style="color: #666600;">=</span><span style="color: #008800;">"some_random_script.js"</span><span style="color: #000088;">&gt;</span><span style="color: #666600;">&lt;</span><span style="color: #008800;">/script&gt;

  &lt;p&gt;Page Content&lt;/</span><span style="color: #000000;">p</span><span style="color: #666600;">&gt;</span><span style="color: #000000;">

  </span><span style="color: #666600;">&lt;</span><span style="color: #000000;">script type</span><span style="color: #666600;">=</span><span style="color: #008800;">"text/javascript"</span><span style="color: #666600;">&gt;</span><span style="color: #000000;">
    </span><span style="color: #666600;">(</span><span style="color: #000088;">function</span><span style="color: #666600;">()</span><span style="color: #000000;"> </span><span style="color: #666600;">{</span><span style="color: #000000;">
      </span><span style="color: #000088;">var</span><span style="color: #000000;"> ga </span><span style="color: #666600;">=</span><span style="color: #000000;"> document</span><span style="color: #666600;">.</span><span style="color: #000000;">createElement</span><span style="color: #666600;">(</span><span style="color: #008800;">'script'</span><span style="color: #666600;">);</span><span style="color: #000000;">
      ga</span><span style="color: #666600;">.</span><span style="color: #000000;">src </span><span style="color: #666600;">=</span><span style="color: #000000;"> </span><span style="color: #666600;">(</span><span style="color: #008800;">'https:'</span><span style="color: #000000;"> </span><span style="color: #666600;">==</span><span style="color: #000000;"> document</span><span style="color: #666600;">.</span><span style="color: #000000;">location</span><span style="color: #666600;">.</span><span style="color: #000000;">protocol </span><span style="color: #666600;">?</span><span style="color: #000000;"> </span><span style="color: #008800;">'https://ssl'</span><span style="color: #000000;"> </span><span style="color: #666600;">:</span><span style="color: #000000;"> </span><span style="color: #008800;">'http://www'</span><span style="color: #666600;">)</span><span style="color: #000000;"> </span><span style="color: #666600;">+</span><span style="color: #000000;"> </span><span style="color: #008800;">'.google-analytics.com/ga.js'</span><span style="color: #666600;">;</span><span style="color: #000000;">
      ga</span><span style="color: #666600;">.</span><span style="color: #000000;">setAttribute</span><span style="color: #666600;">(</span><span style="color: #008800;">'async'</span><span style="color: #666600;">,</span><span style="color: #000000;"> </span><span style="color: #008800;">'true'</span><span style="color: #666600;">);</span><span style="color: #000000;">
      document</span><span style="color: #666600;">.</span><span style="color: #000000;">documentElement</span><span style="color: #666600;">.</span><span style="color: #000000;">firstChild</span><span style="color: #666600;">.</span><span style="color: #000000;">appendChild</span><span style="color: #666600;">(</span><span style="color: #000000;">ga</span><span style="color: #666600;">);</span><span style="color: #000000;">
    </span><span style="color: #666600;">})();</span><span style="color: #000000;">
  </span><span style="color: #000088;">&lt;/script&gt;</span><span style="color: #000000;">
</span><span style="color: #000088;">&lt;/body&gt;</span><span style="color: #000000;">
</span><span style="color: #000088;">&lt;/html&gt;</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.webanalytics.org.cn/google-analytics-launches-asynchronous-tracking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
