Недавно Apple добавила поддержку индексированногоdb как в iOS8 Safari, так и в Safari 7.1 на OSX. Я пытаюсь использовать это в веб-приложении, которое хранит около 65 000 записей в indexeddb и запрашивает их с использованием некоторых составных индексов.Safari-реализация indexeddb очень медленная
Это работает для меня, но по сравнению с внедрением Chrome indexeddb, это действительно очень медленно.
Конкретно ... запрос, который занимает 2 мс от индекса indexeddb от Chrome, занимает 500 мс против индексированного индекса Apple. Этот конкретный запрос использует составной индекс indexeddb (2 поля в ключе), используя значение IDBKeyRange.only для ключа, чтобы вернуть около 100 документов общей суммы 65 000.
Мое приложение поддерживает websql как механизм хранения, а также, когда я переключаюсь на него в Safari, производительность отличная. Мой запрос возвращается через несколько мс, как и в Chrome.
У кого-либо еще есть проблемы с медленностью реализации индекса indeddb от Apple? Любые предложения относительно того, как заставить его работать лучше или нам просто нужно ждать, пока Apple его исправит?
Я считаю, что реализация indexeddb от Apple на самом деле является только оболочкой поверх websql, и тот факт, что я могу реализовать свое приложение с использованием websql напрямую с хорошей производительностью, подразумевает, что такая оболочка, если она будет реализована, должна работать нормально. К сожалению, это еще не так!
Обновление ... Я установил бета-версию iOS9, которая содержит Safari 9 и indexeddb исправлена! Производительность хороша, и проблемы с ключами и другими ошибками исчезли. Я тестировал его до 1,5 ГБ json-документов, и все было в порядке. Кроме того, ограничение размера данных 50 Мбайт пропало, и пользователю не нужно запрашивать сохранение данных. – Category6
Обновление 2. Я говорил слишком рано. iOS9 indexeddb немного лучше, потому что ограничение на 50 Мбайт ушло, и исправлены некоторые ошибки, но его производительность по-прежнему ужасна, если у вас есть несколько тысяч документов. Я вижу время ответа более чем на 5 секунд для запросов индекса. Это непригодно, если у вас есть несколько документов. – Category6