2014-10-03 4 views
2

Есть ли что-нибудь вроде обработчика событий ondelete или способ предупредить пользователя, прежде чем они захотят очистить базу данных indexedDB.Есть ли способ выполнить функцию, когда пользователь пытается удалить базу данных indexedDB?

Справочная информация: Существует автономное первое приложение, которое работает, сохраняя большую часть данных на indexedDB в автономном режиме. Теперь, когда пользователь подключается к сети, он пытается синхронизировать данные с сервером, но теперь, если кто-то ошибочно сбрасывает браузер или очищает индексированный DB, они могут создать катастрофу, поскольку у них есть важные данные, которые необходимо синхронизировать с сервером.

Итак, есть ли способ преодолеть эту проблему? Есть ли способ сохранить indexedDB как постоянную файловую систему или отключить удаление или поднять событие и правильно обработать его при удалении?

ответ

4

№ Несмотря на то, что некоторые из нас используют его, нет гарантии, что данные в базе данных IndexedDB останутся там. Это по дизайну, это «временное» хранилище. Если это необходимо, браузер может освободить место. Ситуация будет несколько улучшена, когда в конце концов можно будет store IndexedDB data as "persistent" data, но никогда не будет способа гарантировать, что данные не удаляются. IMHO пользователь должен иметь возможность удалять данные на своем компьютере, и это будет серьезной проблемой, если это не так.

И проблема может быть даже хуже, чем вы понимаете. Например, here's a bug in Chrome (и, возможно, в других браузерах). Если пользователь говорит «удалить мои файлы cookie и данные сайта за последние 24 часа», Chrome полностью удалит любую базу данных IndexedDB, которая была изменена за последние 24 часа. Поэтому, если у вас 5000 объектов в БД, которые были созданы год назад, но с тех пор они не менялись, и тот, который был отредактирован сегодня, все они удаляются. Это может смутить пользователей, но, насколько мне известно, никто не предложил хорошее решение.

Единственным обходным решением является синхронизация с сервером, которая, очевидно, не на 100% надежна. Поэтому, если у вас есть данные, которые очень важны, вероятно, это не должно быть в базе данных IndexedDB сайта, кроме как в кеше.

 Смежные вопросы

  • Нет связанных вопросов^_^