2010-09-20 66 views
7

我有一個谷歌的異步分析跟蹤器如何工作。下面的代碼是用來初始化命令陣列:解釋谷歌分析異步跟蹤器

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

現在,這是一次GA的代碼加載該被取代,作爲一種隊列存儲您點擊一個標準的數組。

我的疑惑在於想知道如果用戶點擊導致重新加載的鏈接(在加載GA javascript之前),這些點擊可能會如何持續。如果GA代碼沒有捕獲到_gaq對象的推送,那麼用戶點擊一個鏈接並進入一個新頁面,這個數組每次都會被重新初始化。

這不是真的,一個javascript變量不會持續引發刷新的請求嗎?如果是這種情況,那麼我們是不是失去了導致頁面重新加載的原始點擊?

任何解釋是非常感謝。

回答

5

是的,你說得對,如果用戶在ga.js加載並執行了__utm.gif請求到Google服務器之前點擊離開該網站,那麼它將不會跟蹤_gaq數組,並且該信息不存在永遠。但是這個版本代碼仍然比舊的同步代碼提供了許多好處。

首先,使用此方法加載ga.js是而不是阻塞。

巧妙地,ga.js的加載通過JavaScript間接注入,而不是通過硬編碼的<script>標記注入。按照Google Code Blog

摘錄 的後半部分提供與頁面上的其他 腳本加載並行 跟蹤代碼的邏輯。它執行一個 匿名函數,動態地 創建一個元素,並設置 來源與適當的協議。因此,大多數瀏覽器會將 的跟蹤代碼與 頁面上的其他腳本並行加載,因此 會減少網頁加載時間。

這意味着ga.js來加載在非阻塞的方式出現在大多數現代瀏覽器(和一個好處,異步=「真」的一部分,目前在FF 4+, IE10p2+, Chrome 12+, Safari 5.1+,支持形式化這個異步)。這可以輕鬆減少加載時間,並輕微降低ga.js加載之前發生點擊的可能性。

提前排隊_gaq數組的好處是防止競爭條件;事先,如果您在加載ga.js(例如,事件跟蹤視頻播放)之前嘗試進行GA呼叫,它會引發錯誤,並且Event調用將會丟失並且永遠無法恢復。這樣,只要ga.js最終加載,_gaq數組就可以在加載時爲所有調用提供服務。

+0

你能提供一個工作鏈接嗎?那個似乎被打破了 – brad 2010-09-21 14:31:10

+0

修復了這個鏈接;它是http://googlecode.blogspot.com/2009/12/google-analytics-launches-asynchronous.html – Yahel 2010-09-21 14:37:46

2

是的。 JavaScript上下文在頁面重新加載時被拋棄​​,所以如果用戶在ga.js加載之前離開頁面,那些點擊就會丟失。異步版GA的優勢在於它可以放在頁面中更高,這意味着在用戶離開之前加載ga.js的可能性更大。

+0

以及內聯js _gaq init代碼放得高一些,但他們仍然建議把ga的實際加載。JS之後所有正常的JS。而且,ga.js文件本身的加載與腳本標記不阻止的不同步? – brad 2010-09-20 19:35:12

+0

他們推薦把它放在頭部的底部而不是頂部的唯一原因是,Opera目前還不支持異步腳本(它們是GA代碼片段不完全異步的唯一瀏覽器)。 ga.js的加載完全異步。異步腳本不會像正常腳本那樣阻塞。 – Brian 2010-09-21 02:04:19

+0

thx的信息YC的答案是更深入一點。 – brad 2010-09-21 14:31:36