わかりました。2013年1月19日22:30NZSTで、Google Analyticsの実行速度が非常に遅いため、ほとんどのインターネットが這い回っているようです。Stackoverflow、Firefox.com、reddit、およびgoogleの検索は低速です。私にとって最も重要なことは、私の本番ビジネスのWebサイトの実行速度が遅いか、まったくロードされていないことです。いいえ、接続だけでなく、3Gを搭載した携帯電話でもテストしました。GoogleAnalyticsのないサイトは正常に動作しているようです。
これが何が起こるかのスクリーンショットです
これはFirefoxウィンドウの左下隅にあります。そのように20秒以上そこに座ります。接続できない場合は、3秒後に消えてほしいです。
この回転する緑色の画像はFirefoxタブにあり、そこにあるだけで、ページが20秒以上読み込まれているように見えます。接続できない場合は、3秒後に消えてほしいです。
今ではGoogleAnalyticsではないかもしれません、私の国の国際ゲートウェイは遅いか何かで動いているかもしれません。しかし、証拠はそれがグーグルアナリティクスであるかもしれないことを強く示唆しています。これで、Google Analyticsでなくても、サービスが完全にダウンした場合に対抗するためのいくつかの方法に興味があります。したがって、仮に、Google Analyticsのデータセンターで大規模な火災が発生し、消火システムが故障したと仮定しましょう。現在、GoogleAnalyticsは数日間完全にオフラインになります。バックアップサーバーはありません。スタンバイデータセンターはありません。架空のシナリオは大丈夫です。私のサイトをGoogleAnalyticsサービスに依存させる余裕がないので、今でも私のサイトを実行する必要があります。ただし、サービスが実際にタイムリーに実行されている場合は、追加のボーナスとして分析機能を使用すると便利です。
さて、ここでいくつかのアイデアを投げています:
- スクリプトに追加できるタイムアウトがあり、Google Analyticsへの接続をキャンセルし、時間がかかりすぎる場合はリクエスト/ダウンロードを停止しますか?その後、2秒後にサイトの読み込みを続行します。
- または、さらに良いことに、サイトを完全にロードし、サイトのロードが完全に完了した後、Ajaxを使用してGoogle Analyticsにリクエストを送信することもできますか?なぜデフォルトでこれを行わないのですか?
</body>
これが、現在、終了タグの直前に挿入されている、処理する必要のあるコードです。
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-123456789-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
さて、この架空の災害シナリオを修正し、Google Analyticsがダウンしている間、私のWebサイトに継続性を与えるために、私が採用できるいくつかの方法は何ですか?潜在的なソフトウェアまたはハードウェアソリューションに興味があります。PHP / MySQL /HTML5Webサイトが実行されているLinuxVPSに完全にアクセスできると仮定します。
また、これに対する信頼できる答えは何ですか:一部の人々は、終了</head>
タグの前にコードを配置すると言います。</body>
他の人はそれを終了タグの前に置くと言います。どちらが最善の方法ですか?
どうもありがとう
ソリューションの更新
わかりました。Jaspalの助けを借りて何が機能するかを見つけました。解決策は以下のとおりです。
<script type="text/javascript">
// Load Google Analytics after my site has completely loaded
// Then when Google Analytics request is made it won't show any visuals in the browser
setTimeout(loadGoogleAnalytics, 5000);
// Setup _gaq array as global so that the code in the ga.js file can access it
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-123456789-1']);
_gaq.push(['_trackPageview']);
/**
* Loads Google Analytics
*/
function loadGoogleAnalytics()
{
var srcUrl = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
$.ajax(
{
url: srcUrl,
cache: true,
dataType: "script",
success: function(data)
{
console.log('got the script');
},
error: function()
{
console.log('failed to get the script');
},
timeout: 5000
});
};
</script>
基本的にそれが機能する理由は、5秒間のsetTimeoutがあるためです。これにより、すべてのコンテンツ、JS、CSS、画像などを読み込むのに十分な時間がページに与えられます。その後、$。ajaxリクエストが開始され、実際にデータをGoogleAnalyticsに送信しているga.jsと__utm.gifがダウンロードされます。その最初の5秒後、基本的に前述のすべてのブラウザービジュアルが消え、ブラウザーユーザーのビジュアルをロードせずにGoogleAnalyticsリクエストがバックグラウンドでサイレントに発生します。次に、ホストファイルでGoogle Analyticsをブロックしようとしましたが、ブラウザのビジュアルが表示されません。完璧です。
$.ajaxtimeout: 5000
リクエストのプロパティは何もしていないように見えることに注意してください。もともと私は、5秒間データを取得できなかった場合にリクエストを中止することを望んでいましたが、APIドキュメントに次のようなメモがあります
Firefox 3.0以降のみで、スクリプトとJSONPリクエストをタイムアウトでキャンセルすることはできません。スクリプトは、タイムアウト期間の後に到着した場合でも実行されます。
念のため、とにかくそこに置いておきます。私のテストから、Google Analyticsに到達できない場合(Firebug / Chromeのネット/ネットワークパネルを観察して)、Firefoxでは21〜23秒、Chromeでは16秒後にリクエストが中止されます。これはTCPタイムアウトである可能性があります。とにかくそれは静かにタイムアウトし、ブラウザにビジュアルをロードしていないのでユーザーは気付かないので、私はそれについて心配していません。
私は以下のジャスパルの答えを受け入れ、彼の解決策がこれを解決するために重要だったので、彼に賞金を授与しました。ただし、彼のソリューションには、ブラウザに表示される読み込みビジュアルがまだあります。したがって、setTimeout(彼の元のソリューションを少し変更したもの)を使用してここに投稿されたソリューションが進むべき道であり、100%動作することがテストされていると思います。