2011-01-02 9 views
4

私は、組み込みのWebサーバーを備えた小型の組み込み機器向けに新しい機能を構築しています。それはJavascript AJAXとの基本的なWebベースのインターフェースを持っています。私はsetIntervalに500msごとにAJAXポーリング関数を呼び出していたが、XHRモニタリングではFirebugで "aborted"と表示されていた今日の問題に遭遇した。 Web UIは、埋め込み側で変更されたときに確実に更新されていないようです。 FirebugでもXHRの負荷が500ミリ秒に近づくことに気付きました。私はAJAXのポーリング頻度を1000msに変更し、問題を解決しました。しかし、私の分析が正しければ、埋め込まれた側が1000ミリ秒近く近づいてロードするようになると、問題が再発する可能性があります。AJAX - 最良のポーリング頻度の決定方法

私の質問は、最適なポーリング頻度を決定する方法があることです。できるだけ頻繁にUIを更新したいが、サーバーに過負荷をかけたくない(私の場合はかなり遅く、制限されている)。また、Firebug XHRネットワークビューで実際には「中止」されていることは何ですか?

おかげで、 フレッド

答えて

4

500msのは、あまりにも頻繁にあります。 2秒後に作業してください。また、2秒で開始するようなことをしたい場合や、何回か試行しても機能しない場合は、5秒(またはそれ以上)に増やしてください。私はそれをたくさん見る。

注:迷惑メールをポーリングする必要があります。 100人の同時ユーザーの控えめなユーザーベースを持ち、それらがすべてポーリングを必要とするワークフローを使用している場合、毎秒数百の要求がアプリケーションにあふれます。言い換えれば、サーバーを水平に立てるためのリソースがなければ、ポーリングはうまく拡張できません。あなたのユースケースによっては、最初のリクエストを送信して、長時間実行しているプロセスを非同期で開始し、2分後にチェックバックするようにユーザーに指示するほうが良いかもしれません。

私に質問してみましょう:あなたが投票するタスクが完了するまでどれくらいの時間が必要ですか?

+1

私は同意します、ポーリングはかなりクルージングのようです。私はHTML5の新しいウェブソケットは良いソリューションのようだと思うが、実際にはブラウザのサポートとユーザーがほとんどすべてのブラウザを使用できるので、それを使うことはできない。 –

+0

@fred、私は私の答えを更新しました... – hvgotcodes

+2

+1ポーリングで指数関数的な問題を指摘します。 – jondavidjohn

5

setIntervalを使用しないでください。レスポンスを返すと、setTimeoutで別のリクエストを開始してください。

+0

OK、良いアイデアですが、サーバが応答するのにどれくらいの時間がかかるかわからない場合は、タイムアウトをどのように設定する必要がありますか? –

+0

アップデートの間隔はどのくらいですか?あなたが言っているのは、応答を返されてからXミリ秒後に電話したいのです。これは、サーバーの所要時間には関係ありません。 – epascarello

関連する問題