質問

アップデート 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バージョンを使用する必要はありません。

上記のように行うことはできますか?はい

なぜそれが行われなかったのですか?

  1. Cookieは小さいです。すべての静的コンテンツにCookielessドメインを使用する場合、それほど利点はありません
  2. 多くのブラウザがまだサポートしていないため、それほど便利ではありません
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top