[編集:この問題は、より狭い範囲を必要とする可能性がありますので、私は現在、これに気付くとChrome 49.0.2623.112 m(64ビット)をデフォルト設定で使用しています。私は現在HTTPSを使用していますが、スイッチの前に監視しています。]ウェブワーカーは、所有者がフォーカスしていないときに何をしますか?
WebワーカーにAJAXポーリングを渡すアプリケーションがあります。これはパフォーマンス面では驚異的な節約ではありませんが、アプリケーションをより簡単に推論し、将来のパフォーマンス上のメリットをもたらす可能性があります。
私は、XHR要求が行われるたびに私に通知するように、コンソールロギングラインをワーカーに追加します。ご存知のように、ロギングラインの重複がChromeに入ると、Inspectorは重複の数を記録します。
私がページを表示するように、私はコンソールで見ることができます:(52) XHR invoked
私が焦点にページを持っている場合、私はその整数が私のポーリング間隔ごとに、2秒ごとに増加ご覧ください。
は、しかし、その後、私はしばらくの間、別のタブに切り替え
、と返し、それが1だけ更新し、その時点で、更新するために、その数に数秒かかります。これは、ワーカーが実際には一時停止しているためです。この特定のアプリケーションでは問題ありません。また、ワーカーがまだ実行されている可能性がありますが、コンソールAPIは親が表示されていない場合。わからない。
私が解決しようとしている重要なことは、私がタブに戻るときの遅延です。それが応答的に更新されるダッシュボードの場合、更新が継続するまでに10〜60秒の遅延が目立ち、UIパフォーマンスのバグです。
オーナーのタブがフォーカスを失ったときにWebワーカーに何が起こるかについて、誰かが洞察していますか?実際に(XHRメッセージ上で)実行する必要がある作業の各インスタンスをキューイングして、所有者が戻ったときにそれを実行していますか?
フォーカスを失ったときに手動でポーリング機能を一時停止すると、
あなたは、ログ出力にタイムスタンプを追加すると考えていますか?難しいことのように聞こえません。 –
これは、たとえば、アイドル状態になっているワーカーか、メッセージチャネルかコンソールかを検証します。私は別のもののためにいくつかのために労働者を使用していた、彼らはタブを離れるときに中断しなかったので、私は問題が他の場所にあると思う理由があります。 –
私が思うと、ワーカーがまだ稼働していた場合、出力のタイムスタンプは一貫性があります(たとえば、30秒ごとに1つ)。正直言って、最初にすべきことは、問題を示すjsFiddleを作ることです。今私はこれを引き起こす可能性があることを推測しているだけです。あなたがコードを簡素化するときにもそれが起こりますか? –