|
|
Опубликовано 12.10.2023 20:42:27
|
|
|
|

Распространённые фронтенд-решения для хранения данных в основном включают:Cookie、Web Storage、IndexedDB、WebSQL、local Storage、session Storageи так далее, например:
| характерный | печенье | localStorage | sessionStorage | indexedDB | | Жизненный цикл данных | Обычно генерируется сервером, и время истечения может быть установлено; Также могут генерироваться такие компоненты, как front-end внедрение и js-cookie | Если не убрать — она всегда остаётся на месте; Когда браузер закрыт, он также сохраняется локально, но кросс-браузер не поддерживается | Очистка и обновление страницы останутся при закрытии страницы, и кросс-взаимодействие не поддерживается | Если его не убрать, он всегда существовал | | Размер хранилища данных | 4K | 5M | 5M | Нет ограничения по размеру | | Общайтесь с сервером | Он переносится в запрошенный заголовок каждый раз, что влияет на выполнение запроса; В то же время, поскольку он включён в запрос, он также подвержен проблемам с безопасностью | Не участвую | Не участвую | Не участвую | | особенность | Пары ключ-значение строк хранят данные локально | Пары ключ-значение строк хранят данные локально | Пары ключ-значение строк хранят данные локально | IndexedDB — это нереляционная база данных (операции через SQL-операторы не поддерживаются). Он может хранить большие объёмы данных, предоставлять интерфейсы для запросов и создавать индексы, чего другие решения хранения не могут предоставить. |
IndexedDB
В этой статье в основном описывается использование IndexedDB для фронтенд-хранилища и представлено следующим образом:
IndexedDB — это базовый API для хранения больших объёмов структурированных данных (а также больших файловых/бинарных объектов (blobs)) на стороне клиента. API использует индексы для обеспечения высокопроизводительного поиска данных. Хотя веб-хранилище полезно для хранения небольших объёмов данных, оно не так эффективно, как хранение больших объёмов структурированных данных. IndexedDB предлагает решение для такой ситуации. Эта страница является основным руководством по MDN IndexedDB — здесь мы предоставляем полное руководство по ссылкам и использованию API, информацию о поддержке браузера и ссылки на некоторые объяснения ключевых концепций. IndexedDB обладает следующими функциями:
(1) Хранение пары ключ-значение. IndexedDB использует хранилище объектов для хранения данных. Все типы данных могут быть размещены напрямую, включая JavaScript-объекты. В объектном репозитории данные хранятся в виде «пар ключ-значение», и каждая запись имеет соответствующий первичный ключ, который уникален и не может быть дублирован, иначе возникает ошибка.
(2) Асинхронный. IndexedDB не блокирует браузер, и пользователь может выполнять другие операции, в отличие от LocalStorage, который работает синхронно. Асинхронный дизайн предназначен для предотвращения чтения и записи больших объёмов данных, замедляя производительность веб-страниц.
(3) Вспомогательные дела. IndexedDB поддерживает транзакции, что означает, что если один из этапов операции не сработает, вся транзакция будет отменена, а база данных возвращается в состояние до совершения транзакции, при этом не будет случая переписывания только части данных.
(4) Ограничение гомологии. IndexedDB подчиняется тому же ограничению происхождения, и каждая база данных соответствует доменному имени, которое её создало. Веб-страницы могут получать доступ только к базам данных под собственными доменными именами, а не к междоменным базам данных.
(5) Большое место для хранения. У IndexedDB гораздо больше объёма памяти, чем у LocalStorage, обычно не менее 250 МБ, и верхнего предела нет.
(6) Поддержка бинарного хранилища. IndexedDB может хранить не только строки, но и бинарные данные (объекты ArrayBuffer и объекты Blob).
Если начать напрямую с IndexedDB сложно и нужно инкапсулировать его самостоятельно, можно использовать некоторые упакованные пакеты, например:
- localForage: простой Polyfill, обеспечивающий простой синтаксис значений для хранилищ данных на стороне клиента. Он использует IndexedDB в фоновом режиме и возвращается к WebSQL или localStorage в браузерах, которые не поддерживают IndexedDB.
- Dexie.js: Обёртки IndexedDB позволяют быстрее разрабатывать код благодаря простому синтаксису.
- ZangoDB: интерфейс IndexedDB, похожий на MongoDB, поддерживающий большинство привычных функций фильтрации, проекции, сортировки, обновления и агрегации MongoDB.
- JsStore: Обёртка IndexedDB с SQL-синтаксисом.
- MiniMongo: MongoDB в клиентской памяти, поддерживаемый локальным хранилищем, синхронизация серверов через http. MeteorJS использует MiniMongo.
- PouchDB: Клиент, реализующий CouchDB в браузере с использованием IndexedDB.
- idb: Крошечная (〜1.15k) библиотека с большинством API, похожей на IndexedDB, но с некоторыми незначительными улучшениями, которые значительно повышают удобство использования базы данных.
- idb-keyval: Сверхпростое и небольшое (~600 Б) парное хранение ключ-значение на основе обещаний, реализуемое с помощью IndexedDB.
- sifrr-storage: очень небольшая (~2kB) база данных ключ-значений на клиентской стороне. Реализовано на базе IndexedDB, localStorage, WebSQL и Cookies. Он может автоматически выбирать поддерживаемые базы данных, упомянутые выше, и использовать их в порядке приоритета.
- lovefield: Lovefield — это реляционная база данных для веб-приложений, написанная на JavaScript, которая может работать в различных браузерных средах и предоставляет SQL-подобный API, который является быстрым, безопасным и простым в использовании.
localForage
localForage — это быстрый и простой репозиторий JavaScript. localForage улучшает офлайн-опыт веб-приложений, используя асинхронное хранилище (IndexedDB или WebSQL) и простой API, аналогичный localStorage. localForage использует localStorage в браузерах, которые не поддерживают IndexedDB или WebSQL.
Адрес на GitHub:Вход по гиперссылке виден. Урок по китайскому языку:Вход по гиперссылке виден.
localForage предоставляет два разных js-файла, различия из которых следующие:
localforage.js: библиотека обещания, содержащая реализацию Ли (Вход по гиперссылке виден.), файл относительно большой, и синтаксис promise можно использовать в старых браузерах.
localforage.nopromises.js: Нет реализации Promise, поддерживаются только новые версии браузеров.
Тестовый код:
(Конец)
|
Предыдущий:ASP.NET Ядра (двадцать пять) зависимостей вводят ленивые, ленивые, ленивые инициализацииСледующий:Зарезервировать блок CIDR IP-адреса приватной сети IPv4
|