私は、IndexedDBを使用して状態を保存するクライアントサイドのJSアプリケーションを用意しています。正常に動作します。しかし、IndexedDBを頻繁に読み書きしているため、複数のタブが開いているときに状態が矛盾しないようになるため、遅いです。サービスワーカー(または同様のもの)内で長時間実行されるプロセス
私のアイデアは、サービスワーカーの中にすべてのDBアクセス用のものを入れておき、別のタブがデータベースを変更している可能性を気にせずに値をメモリにキャッシュできます。
私のアプリケーションのいくつかの部分が実行に時間がかかることを除いて、それはうまくいくようです。私はサービスワーカーから自分のUIにステータス(「X%done」など)を伝えることができます。しかし、FirefoxとChromeの両方が30秒以上実行されていると、その人を殺すように見える。
この制限はありますか?そうでなければ、何か似たようなことを達成するためのアイディアはありますかシェアードワーカーは、ブラウザのサポートが貧弱であることを除けば、私は思うかもしれませんが、サービスワーカーの後ろの勢いで今は改善することはないと思います。
値の変更が発生したときにすべてのタブを更新しようとしていますか? – guest271314
時々はい、時にはいいえ。 – dumbmatter
'localStorage'、' storage'イベントを使ってみましたか? – guest271314