Накратко
IndexedDB предлага обекти, индекси и транзакции за местни данни. Това позволява по-богата работа от съхраняване на единични настройки, но изисква планиране на схемата и синхронизацията.
Полезно е да знаеш
Браузърът може да съхранява не само единично предпочитание, а и по-големи структурирани набори от данни. IndexedDB е интерфейс за такава работа от страна на клиента. Той позволява извличане и промяна чрез асинхронни операции и използва транзакции. [1] Това е основа например за местен каталог или бележник, който има нужда да намира отделни записи. Наличието на база в браузъра обаче не означава, че задачата за съхранение вече е напълно решена само с избора на технология.
В IndexedDB записите се организират чрез ключове, а стойностите могат да бъдат сложни структурирани обекти. Индексите дават допълнителни пътища за търсене по свойства на тези обекти. [2] Така приложението може да разглежда отделни записи, вместо постоянно да превръща целия си набор в един голям текстов низ. За проектанта важният въпрос е какви справки действително ще са нужни. Подредбата трябва да следва употребата, а не просто да копира външния вид на таблица от друг вид база.
Работата започва с определяне на схема и отваряне на връзка. След това заявките за четене и запис се изпълняват в транзакции. Асинхронният подход позволява операцията да се обработва, без основният интерфейс непременно да чака чрез блокиращо извикване. [1] Това не премахва нуждата от състояние „зареждане“ и обработка на грешки. Потребителят трябва да получи ясен отговор кога данните са готови, а не да вижда празен екран, който може да означава и липса на записи, и незавършена операция.
Моделът е различен от обикновено въображаемо чекмедже с файлове. Промените се правят в транзакционен контекст, а достъпът следва ограниченията за произход на страницата. IndexedDB може да подпомогне приложения, които работят и без постоянна връзка с мрежата. [2] Самият факт, че записът е достъпен локално, обаче не казва как и кога той е изпратен към сървър. Местното състояние и състоянието в отдалечената система са две отделни неща, които приложението трябва съзнателно да съгласува.
Да разгледаме бележка, създадена по време на пътуване без интернет. Тя може да бъде запазена местно и показана отново при следващо отваряне на приложението. Когато връзката се върне, възникват нови въпроси: дали бележката е изпратена, какво става при повторен опит и има ли промяна от друго устройство. Това е пример за логика на синхронизация, която не се получава автоматично от наличието на IndexedDB. Нужно е ясно разграничение между „запазено тук“ и „синхронизирано“.
Браузърите имат собствени правила за налично място и управление на местните данни. [1] Затова важна информация не бива да получава обещание за безусловно постоянно съхранение само въз основа на местния запис. При проектиране се проверяват липсваща база, промяна на схема и отказ на операция. Добре използваната IndexedDB дава по-богати възможности за бърз и устойчив интерфейс, когато тези възможности са част от обмислен жизнен цикъл на данните, а не заместител на всички останали грижи за тях.
Източници
За повече подробности и проверка на информацията: