第二二课:HarmonyOS Next本地存储与缓存策略开发指南‌

2025-03-05 23:00:43
177次阅读
0个评论

一、LocalStorage:页面级状态共享

1. 核心特性与使用场景

‌功能定位‌:LocalStorage用于实现UIAbility实例内多个页面间的数据共享,支持组件树内状态同步‌。 ‌装饰器机制‌: **@LocalStorageProp**实现单向绑定,仅从LocalStorage同步数据至组件‌。 **@LocalStorageLink**:实现双向绑定,组件与LocalStorage数据实时互相同步‌。

// 创建LocalStorage实例
let storage = new LocalStorage();
storage.setOrCreate('theme', 'light');

@Entry(storage)
@Component
struct HomePage {
@LocalStorageLink('theme') theme: string; // 双向绑定

build() {
Column() {
Text(this.theme)
.onClick(() => { this.theme = 'dark'; })
}
}
}

2. 开发注意事项

数据类型限制‌:LocalStorage的键值必须为字符串类型,值支持除Function外的常用数据类型‌。 ‌跨页面共享‌:通过LocalStorage.GetShared()实现不同页面访问同一实例‌。

二、SessionStorage:会话级临时存储

1. 核心特性与生命周期

‌功能定位‌:存储临时会话数据(如用户登录凭证),生命周期与应用程序会话绑定‌。 ‌数据特性‌: 会话结束时自动清除数据 支持键值对存储,数据未加密

// 存储会话数据
SessionStorage.setOrCreate('sessionId', '123456');

// 获取数据
let sessionId = SessionStorage.get('sessionId');

2. 典型应用场景

用户登录态临时保存 页面跳转参数传递

三、数据缓存策略优化

1. 多级缓存架构

层级 技术方案 适用场景 ‌内存缓存‌ LRU策略 高频访问小数据(如配置项)‌ ‌本地存储‌ Preferences/SQLite 结构化业务数据 ‌ ‌持久化存储‌ PersistentStorage 关键配置持久化 ‌

2. 性能优化策略

‌缓存淘汰机制‌:

// LRU缓存示例
class LRUCache {
private cache = new Map<string, any>();
private maxSize = 100;

get(key: string) {
if (this.cache.has(key)) {
const value = this.cache.get(key);
this.cache.delete(key);
this.cache.set(key, value);
return value;
}
return null;
}
}

‌缓存失效控制‌: 时间戳验证:为缓存数据设置TTL(Time To Live)‌4 版本号校验:数据版本变更时主动刷新缓存

3. 缓存监控与管理

‌查询缓存大小‌:

import { storageStatistics } from '@ohos.file.storageStatistics';

let stats = storageStatistics.getCurrentBundleStats();
console.log('缓存大小:', stats.cacheSize);
‌清理缓存‌: // 删除指定缓存文件
let cacheDir = globalThis.context.cacheDir;
fileio.unlinkSync(${cacheDir}/temp_data);

四、总结

存储方案选择‌: 页面级共享选LocalStorage‌1 会话级临时数据用SessionStorage‌ ‌缓存策略核心‌: 内存+本地+持久化三级架构提升性能‌ LRU淘汰与TTL机制保障数据有效性‌ ‌安全建议‌:敏感数据需结合@ohos.security加密存储‌

收藏00

登录 后评论。没有帐号? 注册 一个。