外部サイトへのクリックを計測する場合に、計測漏れと成りうる原因を取り除こうという話です。レースコンディションと呼ばれる実行順序が不定になってしまう場合の回避対策の話になります。 よくあるGoogle Analtyicsでの外部リンクの計測方法としては、onclickに <a href=”hoge.com” onclick=”_gaq.push([‘_trackPageview’,this.href]);”> 外部サイトhoge</a>
(*trackEventのが普通かも) という例があるのですが、実は、googleのヘルプには二通りに説明があります。 1. http://www.google.com/support/analytics/bin/answer.py?hl=jp&answer=72712(外部へのリンクのトラッキング) 2. http://www.google.com/support/googleanalytics/bin/answer.py?hlrm=ja&answer=55527(外部へのリンクのクリックをトラッキングする) タイトルもほぼ同じです。英語版でも同様に二つあります。 上記二つの違いは、ページ遷移を、href属性で実行しているか、onclick内で、document.locationでページを移動させてるかの違いです。さらにdocument.locationで移動させる時には、実行を少し遅らせて、その間で計測のためのgifリクエストが実行される時間的余裕を与えてます。 この事を解説してる記事は英語ですが、下のリンクのものが良いです。 http://www.gwotricks.com/test/2009/07/tracking-outbound-links-right-way.html (*Google WebSite Optimizerでの話で、コンバージョンページをバーチャルなものでする場合に気をつけようという話だけど、analyticsでも全く同じケースとなる。) では、実際に計測の漏れが起きているのかをみてみましょう。Fiddler2というソフトで、リクエストを調べてみます。(私の手元の環境の結果です。実際の計測結果では、多くの私自身が分からない変動要因が多数あると考えてください) ここでは、
では、Fiddler2でリクエストを見てみます。 1計測コードのみ
クロム、IE8で10回づつ計測します。そして、実際に計測gifが発生したかを数えます。計測タグは、以下のようにtrackEvent, trackPageviewを飛ばすとします。
手元での結果:
2 setTimeoutで実行時間を0.01秒遅らせ、document.locationで遷移次は、実行時間を送らせてみる。それにプラスして、0.01秒の余裕でどれくらい、どれくらいリクエストが飛ばせるかを見るために、forループを入れて、10回 x 2 の計測gifを発行しようと試みる。
IEだと、計測用gifが送信された数は、20,18,12,13,20,12,15,13,13,15 Chromeだと、2,2,1,2,7,2,5,2,6 なお、遷移先は、yahool.comやgoogle.comや、自分のサイトやら。リンク先による影響もあるかも。 IEだと、計測用gifの発行が早い?けど、依然、全部送れない事には変わりない。クロムでも、最低でも1つは送れてるけど、少なめ。 |
xその他 >