3

Web サイトの js、css、および画像に CDN (maxcdn.com) を使用しています。一部の ISP では、これらのリソースの読み込みが完全に失敗するか、読み込みが非常に遅いことがわかりました。ただし、サーバーからのローカル静的サービングは常に正常に機能します。そのため、このようなリソースの読み込みエラーを検出し、ローカル サービスにフォールバックして対応できるようにしたいと考えています。

ここで、js および css の読み込みエラーを検出するためのいくつかの解決策を見つけました。最も一般的なのは、埋め込まれた js を使用して、いくつかの js var と css からのいくつかの cssRules をチェックすることです ( の直前、 script タグと link タグの後に配置されます)。ただし、これは次のことを許可しません。

  1. 読み込みの遅さを検出します (遅さが検出されるとすぐにフォールバックを開始する必要があります…)
  2. css から参照された画像の読み込みエラーを検出します。

リソースの読み込みの失敗/遅さを検出し、すぐにローカル サービングに戻す簡単でエレガントな方法はありますか?

4

2 に答える 2

2

ここに記載されているようにhttps://stackoverflow.com/a/2021325/745190スクリプトのロードを開始した後にスクリプトを無効にする方法はありません。

最初にcdnから非常に小さい(.1kb)スクリプトをロードしてみることができます。非常に短い時間の後にそのスクリプトをテストします。ダウンロードする場合は、javascriptを使用して他のスクリプトタグをページに追加します。そうでない場合は、不必要にダウンロードされた小さなファイルです。

悲しいことに、この方法には2つの大きな欠点があります。1つ目は、cdnに追加のクエリがあることです。2つ目は、小さなスクリプトを完全にロードできないと、ブラウザのホイールが回転し続ける可能性があることです。

よくわからない場合のテストは次のようなものです。

/* tiny-file.js */
var window.speedTest = true;

/* The test */
setTimeout(function(){
    if (window.speedTest !== true) {
        //append local javascript
    }
    else {
        //append cdn javascript
    }
}, 50);
于 2012-07-09T16:09:06.713 に答える
1

あなたの問題は主に一部の ISP で発生すると思われます。

主な目標が CDN を主なソリューションとして維持しながらパフォーマンスを達成することである場合、2 つの選択肢があります。最初に、障害のある ISP を特定しようとしますが、かなり長く費用がかかる可能性があります。もう1つの選択肢は「学ぶ」ことです。CDN から変数を設定する単純な JS をロードしてみてください。失敗した場合は、問題があると見なすことができます。Cookie を設定し、次のページの読み込みでそれを使用して、メイン サーバーからすべてを自動的に読み込みます。

于 2012-07-16T07:42:53.850 に答える