跳到主要内容
版本:v3

Capacitor 中的数据存储

大多数应用都需要持久化和读取本地数据。根据具体的使用场景,可以采取几种不同的方法。

需要加密您的本地数据吗?Ionic 为 Capacitor 应用提供了一套开箱即用的安全套件,包括身份验证、生物识别和安全存储。了解更多

为什么不能直接使用 LocalStorage 或 IndexedDB?

由于 Capacitor 应用主要在 Web 视图或浏览器中运行,Capacitor 开发者可以使用 Web API 进行存储。然而,使用这些 API 时需要注意一些重要的限制。

Local Storage 可用于少量临时数据,例如用户 ID,但必须将其视为易失性数据,这意味着您的应用需要预期数据最终可能会丢失。这是因为如果设备存储空间不足,操作系统会回收 Web 视图中的本地存储。IndexedDB 至少在 iOS 上也是如此(在 Android 上,可以使用持久存储 API 将 IndexedDB 标记为持久存储)。了解更多关于浏览器中数据存储驱逐策略的信息。

Capacitor Storage API

Capacitor 附带了一个原生的 Storage API,可以避免上述的驱逐问题,但仅适用于少量数据。

Storage API 提供了一个简单的键/值 API,不支持高级查询:

import { Storage } from '@capacitor/storage';

// JSON "set" 示例
async setObject() {
await Storage.set({
key: 'user',
value: JSON.stringify({
id: 1,
name: 'Max'
})
});
}

// JSON "get" 示例
async getObject() {
const ret = await Storage.get({ key: 'user' });
const user = JSON.parse(ret.value);
}

大数据量或高性能存储选项

对于存储大量数据并以高性能方式访问,有几种选择。

最广泛支持的选项是 SQLite。有许多社区维护的 SQLite 插件可以在 Capacitor 中使用,包括 capacitor-sqlitecordova-plugin-sqlite

Capacitor 团队还提供了一个企业级 SQLite 存储解决方案,支持加密并与设备上的安全密钥管理 API 集成。