一、LocalStorage:页面级状态共享

1. 核心特性与使用场景

  • 功能定位‌:LocalStorage用于实现UIAbility实例内多个页面间的数据共享,支持组件树内状态同步‌12。
  • 装饰器机制‌:
    • @LocalStorageProp:实现单向绑定,仅从LocalStorage同步数据至组件‌16。
    • @LocalStorageLink:实现双向绑定,组件与LocalStorage数据实时互相同步‌16。
// 创建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外的常用数据类型‌6。
  • 跨页面共享‌:通过LocalStorage.GetShared()实现不同页面访问同一实例‌6。

二、SessionStorage:会话级临时存储

1. 核心特性与生命周期

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

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

2. 典型应用场景

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

三、数据缓存策略优化

1. 多级缓存架构

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

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`);  
    

四、总结

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

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐