2013-04-24 80 views
2

GA對ga.js施加每秒一擊的速率限制。如果我理解正確,那意味着我們可以非常快速地完成所有我們想要的任務,但隊列將保持增長,並且只能慢慢清空,每秒一個事件。如何檢查_gaq是否已清空?

假設我有一個讓瀏覽器離開的按鈕。如果我是偏執狂類型,我如何確保_gaq在離開之前已被清空(否則某些事件沒有機會發送到GA)?

+0

什麼可以清除它呢? – Blender 2013-04-24 03:58:43

+0

ga.js的速率限制是10個點擊加上每秒一個 - 你是否真的推動足夠的跟蹤命中來擔心達到極限? – mike 2013-04-24 14:18:28

+0

@mike:正是我爲什麼說「我是偏執型」。說實話,我不知道。我正在重新設計我的網絡應用程序的Google Analytics(分析)跟蹤功能,現在我要離開舊的跟蹤程序,以便在調整新的跟蹤設計時進行平滑過渡。這意味着我可能會發送大約兩倍的跟蹤數據。 – Kal 2013-04-25 02:09:46

回答

3

一種可能性 - 用ga.js,你可以將一個函數對象推到_gaq上,這可以用於頁面導航。 (更新:這將不適用於檢測速率限制

但是... GA速率限制是針對'命中',即命令發送數據到GA。目前還不清楚在達到限制時如何限制 - 如果是通過限制_gaq命令執行,那麼使用函數對象應該可以工作。

另一種可能性是切換到新的Universal Analytics,它允許在處理命中後運行hitCallback函數。此外,速率限制是每秒20 + 2次點擊。


更新: 我只是跑下面的測試在Chrome中,使用的開發工具控制檯和網絡面板:

for (i = 0; i < 20; i++) { 
    _gaq.push(['_trackEvent', 'test', 'test', 'test', i]); 
    _gaq.push(function() {console.log(i + ': ' + new Date());}); 
} 

控制檯日誌顯示1秒鐘之內全部20個時間戳。 網絡日誌只顯示前10個跟蹤圖像請求。

我對測試的解釋是GA命令限制'命中'命令是通過丟棄數據來實現的。

+0

我的理解是_gaq應該是一個真正的FIFO隊列。文件中關於費率限制的說法,我認爲只有事件類型命中會消耗配額;遇到的所有其他類型的命中都不會耗盡配額。如果是這樣的話,那麼你的建議可能會奏效。 – Kal 2013-05-09 04:42:47

+0

從我剛剛跑過的測試中看到一個壞消息,它看起來像是在達到GA限制速度時,數據沒有排隊,而是被扔掉。 – mike 2013-05-09 14:48:45

+0

不應該認爲是一個錯誤?我不知道其他人,但如果我被迫丟失數據,我寧願在最後丟失數據,也不願意丟失中間的數據塊。 – Kal 2013-05-10 02:40:57