こんにちは 最新リリースでは、Chromeは非常に珍しいブラウザーの動作を検出しました。 この動作により、Webスクリプトで新しい異常なエラーが発生しました。 そして、Chromeのパフォーマンスを最適化する方法と、発生する可能性のある異常な結果について共有することにしました。
行こう
発生した異常は次のようになります。
- ユーザーはWebアプリケーションを使用します。
- 次に、ユーザーがアプリケーションのボタンをクリックします。 このボタンは、ページ上の情報を保存し、新しいタブを開きます(保存された情報とともに)。
- 実際には、情報は新しいタブに保存されません。 これがバグです。
- また、異常があります。その後、最初のタブに切り替えてから(2番目に)、再度新しいタブに切り替えると、情報はすぐに(ページを更新した後)新しいタブで使用可能になります。
異常の理由
とても奇妙に見えます。 新しいタブに切り替えると、Chromeは古いタブを完全にブロックしているようです。
最近(2017年3月14日、リリース57)Chromiumは、パフォーマンスが大幅に最適化されたリリースをリリースしたことが判明しました。 最適化の1つは、バックグラウンドタブに割り当てられるリソースを削減することです。 証明: https : //blog.chromium.org/2017/03/reducing-power-consumption-for.html
また、この最適化は、バックグラウンドタブをすぐにブロックします(!)新しいタブを開いた後。 さらに、パフォーマンスの低下は、javascriptの動作だけでなく、他のAPIにも関係します。 たとえば、私たちの場合、ブラウザでのIndexedDBの操作は驚くほどゆっくりと動き始めました。
修正方法
これらの「動作機能」を回避するには、独自の非同期コールバックを同期的に呼び出して、システム非同期APIへの依存を減らす必要がありました。