Google Analytics Cookieをローカル/セッションストレージに変換します
-
12-10-2019 - |
質問
アップデート http://jsfiddle.net/musicisair/rsktp/embedded/result/
Google Analyticsは、そのドメインにすべての要求で送信される4つのCookieを設定します(およびそのサブドメインを設定します)。私が言うことができるものから、実際にそれらを使用しているサーバーはありません 直接;彼らは一緒に送られます __utm.gif
クエリパラメーションとして。
現在、Google Analyticsは明らかにその価値について読み書き、書き込み、行動し、GAトラッキングスクリプトで利用できる必要があります。
だから、私が疑問に思っているのは、それが可能かどうかです:
- 書き換えます
__utm*
後にローカルストレージにクッキーga.js
それらを書いた - 後に削除します
ga.js
実行しました - ローカルストレージからクッキーを直前に戻すクッキーを書き直します
ga.js
それらを読みます - やり直します
または、 モンキーパッチ ga.js
Cookieの読み取り/書き込みパーツを開始する前にローカルストレージを使用します。
明らかに、私たちが削除するために邪魔にならない場合 __utm*
Cookie分析の非同期バリアントも使用します。
私はダウンロートが質問をしなかったからだと思います。ああ!
私の質問は次のとおりです。
上記のように行うことはできますか?
もしそうなら、なぜそれが行われなかったのですか?
デフォルトがあります HTML/CSS/JS
YSLOW、PagesSpeed、およびChromeの監査を通過するボイラープレートテンプレートは、ほぼ完璧なスコアを獲得します。私は、ローカルストレージをサポートするブラウザのGoogleアナリティクスから残っているクッキーバイトを絞る方法を本当に探しています。
解決
これを使って:
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
if(window.localStorage) {
ga('create', 'UA-98765432-1', 'www.example.com', {
'storage': 'none'
, 'clientId': window.localStorage.getItem('ga_clientId')
});
ga(function(tracker) {
window.localStorage.setItem('ga_clientId', tracker.get('clientId'));
});
}
else {
ga('create', 'UA-98765432-1', 'www.example.com');
}
ga('send', 'pageview');
最初に、かどうかを確認します localStorage
サポートされています。それがサポートされている場合、 'storage': 'none'
オプションはCookieを無効にします。これで、ClientIDをLocalStorageから設定できます。それが空の場合、Googleアナリティクスは私たちのために新しいものを生成します。トラッカーがロードされた後、LocalStorageで新しい(または既存の)ClientIDを保存します。
もしも localStorage
サポートされていません。通常の分析方法を使用しています。初期化の後、私はPageViewを介して送信します ga('send', 'pageView')
.
また、このプランクをチェックしてください: http://plnkr.co/mwh6xwgk00u3cfotzepk
他のヒント
Chromeでのいくつかの実験は、ゲッターとセッターを使用してパッチすることが可能であることを示しています document.cookie
これのために、次のようなもの
document.__defineGetter__('cookie', function () {
// Replace this with code to read from localstorage
return "hello";
});
document.__defineSetter__('cookie', function (value) {
// Replace this with code to save to localstorage
console.log(value);
});
Ga.js(または他のJavaScript)は、通常どおりCookieを実行してアクセスできますが、サーバーに渡されることはありません。
明らかに、これは一部のブラウザでのみ機能します。それが機能しないブラウザは、通常のCookieに戻る必要があります。
この質問にはいくつかの関連するアイデアがあります: javascriptでdocument.cookieをmock.cookieすることは可能ですか?
はい、それはできます。リクエストするだけです __utm.gif
パラメーターを使用。残りのデータは、ソース、セッションの開始時間、および/または以前の訪問を追跡するために使用されます。
クッキーを両方の方法で簡単に転送できるため、最初のアプローチは正常に動作するはずです。
2番目のアプローチが機能する場合...わからない。わからない ga.js
簡単に不可能になるかどうかを推定するのに十分なコード。
3番目のオプションもあります。独自のバージョンを実行します ga.js
. 。 Googleバージョンを使用する必要はありません。
上記のように行うことはできますか?はい
なぜそれが行われなかったのですか?
- Cookieは小さいです。すべての静的コンテンツにCookielessドメインを使用する場合、それほど利点はありません
- 多くのブラウザがまだサポートしていないため、それほど便利ではありません