- Chromeブラウザでは、タブを切り替えるとバックグラウンド処理が影響を受けることがあります。
- これは、非アクティブタブのリソース使用やJavaScript・WebSocket接続を制限する設計になっていることが原因です。
- 重要な処理中はタブを開いたままにするか、別ウィンドウでの実行やPWAの利用を検討することができます。
![[Chrome]タブを切り替えると処理が進んでいない?(非アクティブタブ)](https://chiilabo.com/wp-content/uploads/2020/09/instructor-m.png)
オンラインツールの処理でサーバ側に指示を出して待つ場合でも、それを受け取るクライアント側の応答が停止していると、処理が停滞してしまうものが少なくないのです。
1. タブを切り替えるとAIの回答生成が進んでいない?
Chromeブラウザでタブを切り替えると、オンラインで実行している操作が途切れる気がします。
例えば、AIの回答生成や、データ変換処理などです。
すでにサーバに指示は送っているので待つだけのはずなのに、タブを戻すと進捗していないことが多いように感じます。
ブラウザのタブを切り替えると、バックグラウンドの処理が影響を受ける可能性があります。
- ブラウザのリソース管理
- バックグラウンドスロットリング
- ウェブソケット接続への影響
![タブを切り替えるとAIの回答生成が進んでいない?](https://chiilabo.com/wp-content/uploads/2020/09/instructor-m.png)
ChromeはアクティブでないタブのメモリやCPU使用量を抑える設計になっています。
しかし、これが原因でバックグラウンドの処理が遅くなったり一時停止したりすることがあります。
2. クライアントサイドとサーバサイドの処理の違い
Chromeは省電力化とパフォーマンス最適化のため、バックグラウンドタブでのJavaScript実行を制限しています。
この制限は段階的に導入され、Chrome 88以降でさらに強化されました。
![クライアントサイドとサーバサイドの処理の違い](https://chiilabo.com/wp-content/uploads/2020/09/instructor-m.png)
これにより、JavaScriptを使った特に長時間実行される処理や計算集約的なタスクは影響を受けます。
ただし、AIの推論やデータ処理などのサーバ側で実行される処理は、基本的にタブの状態に関係なく継続して実行されます。
影響を受けているのは、主に以下のような処理です。
- クライアント側から定期的にサーバー側の更新を確認する処理(ポーリング処理)
- 進捗状況の更新
- ウェブソケット経由での結果取得
- UIの更新処理
つまり、タブがバックグラウンドになると制限を受けるのは、ブラウザ(クライアント側)での処理。
サーバ側での処理が完了していても、その結果の取得や表示が遅延してしまう原因になります。
2-1. ウェブソケット接続が中断されている?
ややこしいのが、サーバ側とクライアント側が協調して動作する処理です。
特に、AIの回答生成などでよく使用される「ウェブソケット接続」は、タブがバックグラウンドに移動することで影響を受けます。
「ウェブソケット(WebSocket)」は双方向のリアルタイム通信を実現するプロトコルです。
チャット、ゲーム、ライブ更新などに適した通信方法ですが、バックグラウンドになると影響を受けます。
- Ping/Pongフレームの送信間隔の延長
- Keep-Alive接続の管理
- ネットワーク状態変化時の再接続処理の遅延
![ウェブソケット接続が中断されている?](https://chiilabo.com/wp-content/uploads/2020/09/instructor-m.png)
データの送受信の間隔が開くことで遅くなるのです。
ウェブサイト側は、以下の方法で対処することができます。
- バックグラウンド検知時の接続管理
- 自動再接続の実装
- Service Workerを使用したコネクション維持
3. PWAとしてインストールする
単純な対策は、重要な処理を実行している間は該当タブを開いたままにすることです。
それに加えて、「アプリとしてインストール」することで「PWA(Progressive Web Apps)として開くと、より安定した動作が期待できます。
「PWA」は、通常のウェブサイトをアプリのように使える形式に進化させたものです。
ブラウザのタブとは別の独立した実行環境で動作します。
そのため、ブラウザから制限を受けずに安定して動作させることができます。
![PWAとしてインストールする](https://chiilabo.com/wp-content/uploads/2021/08/sakurotu-ga-ru2.jpg)
「タブが切り替わった」というのをわからないようにすればいいんだね。
![PWAとしてインストールする](https://chiilabo.com/wp-content/uploads/2020/09/instructor-m.png)
ブラウザのバックグラウンド処理は遅くなる一方、リソースを節約できているわけです。
![Google Keepのパソコン版が変わっていた(オフライン機能終了)](https://chiilabo.com/wp-content/uploads/2024/06/image-34-14-320x198.jpg)
![なぜ2つのInstagramアプリがあるの?【PWA】](https://chiilabo.com/wp-content/uploads/2023/02/image-38-320x198.png)
![[PWA] 「ホーム画面に追加」という通知とは?(インストール不要のウェブアプリ)](https://chiilabo.com/wp-content/uploads/2024/06/image-34-15-320x198.jpg)