У меня есть приложение JS на стороне клиента, которое использует IndexedDB для хранения своего состояния. Работает отлично. Тем не менее, это довольно медленно, потому что я часто читаю и записываю в IndexedDB, чтобы состояние не становилось непоследовательным, когда открываются несколько вкладок.Долгосрочный процесс внутри Service Worker (или что-то подобное)
Моя идея заключалась в том, что ... все элементы доступа к базе данных были включены в Service Worker, а затем я могу кэшировать значения там в памяти, не беспокоясь о том, что другая вкладка могла изменить базу данных.
Это похоже на работу, но некоторые части моего приложения занимают много времени. Я могу сообщить статус (например, «X% done») от Рабочего Рабочего в мой пользовательский интерфейс. Но как Firefox, так и Chrome, похоже, убивают рабочего, если он работает более 30 секунд, что слишком мало для меня.
Есть ли способ обойти это ограничение? Если нет, то идеи для достижения чего-то подобного? Я думаю, что Shared Worker может это сделать, за исключением поддержки браузеров, и я не ожидаю, что теперь это улучшится благодаря импульсному обслуживанию Service Workers.
Вы пытаетесь обновить все вкладки при изменении значения? – guest271314
Иногда да, иногда нет. – dumbmatter
Вы пытались использовать событие 'localStorage',' storage'? – guest271314