2009-05-14 10 views
3

今日のGoogleの停電がウェブ全体に及ぼす影響を見て、これを今後どのように防止するか考えています。これは愚かな質問かもしれませんが、APIが利用できない場合は、インクルードするページにまだ兵士がいなくてもよいように、外部API(例:GoogleのAJAXライブラリ)を含めるための良い方法がありますか?一般的に外部サーバーでホストされているライブラリを使用することは、一般的には悪い考えですか?API停止からサイトを保護するにはどうすればよいですか?

答えて

7

スクリプトタグを使用してドメイン間のJavasScriptファイルをロードすることは避けられません(これがダウンするとタイムアウトになります)。ただし、コード内では、エラーを回避するためにヌルであるAPIオブジェクトを確認してください。

など。代わりに:

<script type="text/javascript"> 
    google.load("maps", "2"); 
    // Use Maps API 
</script> 

使用:

<script type="text/javascript"> 
    if(google != null) 
    { 
    google.load("maps", "2"); 
    // Use Maps API 
    } 
    else 
    { 
    // Fallback 
    } 
</script> 

私は希少な停電が外部APIの卸売を拒絶する価値があるとは思いません。

0

ウェブ上で第三者のライブラリにアクセスする必要があります。あなた自身に尋ねる必要がある質問は、これがどれくらい必要なのか、そしてどれをキャッシュすることができるかということです。

可能な限り100%に近い稼働時間が必要な場合は、これらのサードパーティーにどれくらい依存しているかを見てください。

あなたが取得しているのは1時間に1回の天気ですが、おそらくそれがキャッシュされていても問題は発生しません。第三者にそのミリ秒間だけ有効なデータがあるかどうかを尋ねる場合は、おそらくエラーハンドリングを調べてそこにないかもしれないという事実をカバーする必要があります。

質問に対する回答は、あなたの状況の詳細に完全に基づいています。

1

私は帯域幅を節約するので、外部ライブラリを使用することをお勧めします($$を読む)。しかし、この種のapiの停止に対して保護するのはかなり簡単です。 apiが正常に読み込まれた場合は、サーバーとJavaScriptチェックにコピーを保存してください。サーバーにロードしていない場合。

ここでjQueryとYUIについて考えていました。マッピングのような実際のサービスを使用するときには、他の人が問題について正しいです。

2

私が与えることができる最高の一般的な答えは、美しく劣化やエラーを送る優雅&避けています。サービスが利用できなくなる可能性がある場合は、そのサービスを期待し、できる限りの仕事をしてください。 B utこれは一般的に答えることができる質問ではないと思います。サイトの内容、使用している外部ライブラリ/ APIなどによって異なります。

古いデータのページを提供するには、何らかのキャッシュを行うことができます。許可されている場合は、独自のサーバーでAPIエンジンを実行できます。あるいは、単にステータスメッセージをユーザーに投げることもできます。

外部APIに頼るのは悪い考えではありませんが、主な欠点の1つは、あなたがそれをほとんど制御できないということです。それが消えたら?大きな問題へようこそ。停止?それほど多くはできませんが、待ってください。

0

GoogleやローカルWebサーバーを使用してYUI、JQueryなどのライブラリを切り替えてプロバイダを切り替えることができるようにするには、アプリケーションにスイッチを含めることはかなり簡単です。この問題を軽減するための

1

一つの可能​​性(自分のサイトが動的に生成されている場合にのみ動作します):

あなたが気にどれだけ依存し、どんな/ 10分ごと/時間を実行しますcronジョブを設定します。あなたが含まれている外部ファイルをダウンロードしようとしましたか、あなたが依存している外部ホストごとに1回試行してください。個々の外部ホストが現在使用可能かどうかを表すフラグをデータベースに設定していますか。

ページが生成されているときは、external-hostフラグをチェックし、外部ホストを指すソース属性を表示するか、アップしている場合はローカルコピーを表示します。

ボーナスポイントの場合、cronjobから正常にダウンロードされたファイルをローカルコピーにしてください。次に、あなたのローカルコピーは、とにかく外部ホストからの最新バージョンを表します。

3

あなたはアプリケーションを適切に機能を低下させるように設計したいと考えています(他にも述べたように)。実際にはそうすることに役立つデザインパターンがあります。 Proxy Patternが正しく実装されている場合、サービスが利用可能かどうかをチェックし、アプリケーションに適切なデータ、キャッシュされたデータを適切に返すか、サービスが利用できないことをアプリケーションに通知するゲートキーパーとして使用できます。

関連する問題