鸿蒙三方库 | harmony-utils之CacheUtil缓存管理详解
前言缓存是提升应用性能的重要手段合理的缓存策略可以减少网络请求和重复计算。pura/harmony-utils的CacheUtil封装了内存缓存管理方法支持过期时间和容量控制。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解帮助开发者快速掌握并应用到实际项目中。一、CacheUtil核心APICacheUtil提供了以下缓存管理方法方法说明返回类型使用场景put(key, value, expireMs)写入缓存void数据缓存get(key)读取缓存Object缓存查询remove(key)删除缓存void缓存清理clear()清空缓存void全量清理size()获取缓存数量number容量监控1.1 核心特性简洁易用封装复杂API为一行调用降低使用门槛类型安全完整的TypeScript类型定义编译期即可发现错误异常处理内置异常捕获机制避免运行时崩溃过期控制支持设置缓存过期时间1.2 缓存策略对照策略说明适用场景定时过期设置过期时间API响应缓存手动清理调用clear()数据刷新容量控制监控size()内存管理二、完整使用步骤2.1 安装依赖ohpminstallpura/harmony-utils2.2 写入缓存import{CacheUtil}frompura/harmony-utils;Button(写入缓存).width(100%).onClick((){try{CacheUtil.put(user_info,{name:张三,age:25},60000);this.result缓存写入成功 ✅\n有效期: 60秒;}catch(e){this.result异常: e;}})2.3 读取缓存Button(读取缓存).width(100%).onClick((){try{letvalueCacheUtil.get(user_info);this.resultvalue?缓存命中 ✅\n${JSON.stringify(value)}:缓存未命中 ❌\n已过期或不存在;}catch(e){this.result异常: e;}})2.4 清空缓存Button(清空缓存).width(100%).onClick((){try{CacheUtil.clear();this.result缓存已清空 ;}catch(e){this.result异常: e;}})三、完整页面示例import{CacheUtil}frompura/harmony-utils;EntryComponentstruct CacheDemo{Stateresult:string;build(){Column({space:12}){Button(写入缓存).width(100%).onClick((){CacheUtil.put(test,Hello Cache!,30000);this.result写入成功数量:${CacheUtil.size()};});Button(读取缓存).width(100%).onClick((){letvCacheUtil.get(test);this.resultv?命中:${v}:未命中;});Text(this.result).fontSize(14).fontColor(#333333)}.padding(16)}}四、进阶用法4.1 API响应缓存import{CacheUtil}frompura/harmony-utils;asyncfunctionfetchWithCache(url:string,expireMs:number60000):PromiseObject{letcachedCacheUtil.get(url);if(cached)returncached;letresponseawaitfetch(url);letdataawaitresponse.json();CacheUtil.put(url,data,expireMs);returndata;}4.2 缓存预热functionwarmUpCache():void{CacheUtil.put(config,loadConfig(),300000);CacheUtil.put(dictionary,loadDictionary(),600000);}五、注意事项内存缓存CacheUtil为内存缓存应用退出后数据丢失过期时间过期时间单位为毫秒容量控制注意监控缓存数量避免内存溢出初始化依赖使用前需确保AppUtil.init()已调用线程安全多线程访问需注意并发安全六、常见问题Q1: 缓存数据在应用重启后还在吗不在CacheUtil是内存缓存应用退出后数据丢失。持久化请使用Preferences或数据库。Q2: 如何设置永不过期的缓存不传expireMs参数或设置为0缓存将不会自动过期。Q3: 缓存占用内存过大怎么办定期调用clear()清理或使用LRUCacheUtil替代。Q4: get()返回null是什么原因可能是缓存已过期、已被删除、或从未写入。总结CacheUtil的缓存管理方法为应用性能优化提供了便捷支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。合理使用缓存可以显著提升应用响应速度。本文基于pura/harmony-utils工具库更多功能请参考官方文档与后续系列文章。