当前位置: 首页 > news >正文

web-storage-cache离线缓存技术的详细讲解与使用

目录

  • 一:web-storage-cache的优势
  • 二:基础使用
  • 三:项目实战基础使用示例

一:web-storage-cache的优势

WebStorageCache 是一个对原生 Web Storage API(localStorage/sessionStorage)的增强封装库,主要提供以下优势:

  1. 智能过期管理(核心优势)
    原生问题: 存储的数据永久有效(除非手动清除)。
    WebStorageCache: 可以设置超时时间。
  2. 自动转换数据类型
    原生问题: 只能存储字符串,需手动 JSON 序列化/反序列化。
    WebStorageCache: 可以自动处理对象/数组等复杂类型,支持所有可 JSON 序列化的数据类型。
  3. 多级缓存策略
    高频读取数据优先从内存获取,通过分层缓存设计显著提升了数据访问效率。
  4. 支持延长有效期和修改数据
    可以延长缓存有效期、可进行条件替换。
  5. 自动垃圾回收
    可以设置自动清理过期数据(默认读取时检查),也可以手动清理。

二:基础使用

上述讲解了web-storage-cache的优势,下面将结合以上优势进行使用演示:

  1. 安装web-storage-cache
npm i --save web-storage-cache
  1. 基础使用

以下以localStorage缓存为例

// 引入web-storage-cache
import webStorageCache from 'web-storage-cache'// 创建webStorageCache实例,默认使用的localStorage缓存
const wsCache = new webStorageCache()// 设置缓存
wsCache.set('userInfo', { name: '张三', age: '18' })// 获取缓存
wsCache.get('userInfo') // 删除缓存
wsCache.delete('userInfo') // 设置超时时间为1秒(注意:exp的单位是秒,不是毫秒)
wsCache.set('name', '李四',{exp:1})// 更新超时时间2秒
wsCache.touch('name',2)// 添加缓存,仅在不存在或者超时时插入
wsCache.add('name', '李白')// 替换缓存,仅在存在且未超时时更新值
wsCache.replace('name', '王维',{exp:1})// 删除所有已过期缓存
wsCache.deleteAllExpires()// 清空所有缓存
wsCache.clear()
  1. 拓展——sessionStorage
    上述案例默认是使用的localStorage缓存,若需使用sessionStorage缓存,则需要在webStorageCache实例中配置storage值,其它使用方法同上。
// 创建webStorageCache实例
const wsCache = new webStorageCache({//storage可设置为localStorage和sessionStoragestorage:'sessionStorage', // 其它可选配置项,例如:exp: 3 // 默认过期时间(秒)
})

三:项目实战基础使用示例

以下以vue3+ts项目为例:

  1. 创建useCache.ts文件,封装web-storage-cache
// 引入webStorageCache
import webStorageCache from 'web-storage-cache'
// 声明cacheType自定义类型
type cacheType = 'localStorage' | 'sessionStorage'
// 封装useCache函数
const useCache=(typeValue:cacheType='localStorage')=>{// 创建webStorageCache实例const wsCache: webStorageCache = new webStorageCache({storage:typeValue,exp: 60 * 60 * 24,//设置超时时间为24小时})return wsCache
}
export default useCache

2.在相应页面引入并使用

<script setup lang="ts">// 引入封装的useCacheimport useCache from '../hooks/useCache'// 使用localStorage缓存const wsCacheLocal = useCache()wsCacheLocal.set('token', '123456')wsCacheLocal.touch('token', 1000)wsCacheLocal.replace('token', '888888')console.log(wsCacheLocal.get('token'));wsCacheLocal.delete('token')// 使用sessionStorage缓存const wsCacheSession = useCache('sessionStorage')wsCacheSession.set('name', '李四', { exp: 1 })console.log(wsCacheSession.get('name'));wsCacheSession.deleteAllExpires()wsCacheSession.clear()
</script>
http://www.dtcms.com/a/286601.html

相关文章:

  • 虚拟商品自动化实践:闲鱼订单防漏发与模板化管理的技术解析
  • 零售行业 AI 客户咨询对话系统实战指南
  • 深入理解Linux文件操作:stdin/stdout/stderr与C语言文件函数全解析
  • 【实战】一次出口连接数超限事故引发的架构反思:强制代理、NAT 网关与大厂最佳实践
  • 网络编程(modbus,3握4挥)
  • 【C#】引用(Reference)句柄(Handle)
  • 库的制作与原理
  • 退信、延迟、遇攻击?CACTER 邮件安全海外中继:让跨境通邮 “零障碍”
  • 【前后端】沙箱机制
  • gcc 源码分析:从IR-RTL 到汇编输出
  • C++ 程序 AddressSanitizer:DEADLYSIGNAL
  • 自动化面试题
  • spring-cloud微服务部署转单体部署-feign直连调用
  • 磁悬浮轴承系统中由不平衡力引发的恶性循环机制深度解析
  • 初探:C语言FILE结构之文件描述符与缓冲区的实现原理
  • 前端 SSE 实战应用:用最简单的方式实现实时推送
  • Python基础④-装饰器、迭代器及常用函数篇
  • 在断网情况下,网线直接连接 Windows 笔记本和 Ubuntu 服务器进行数据传输
  • 高性能数据库-Redis详解
  • verilog tb文件 美化terminal输出
  • Webpack 项目构建优化详解
  • 雪豹大模型驱动效率革命 华鼎冷链科技重构餐饮供应链神经网络
  • 进程 线程 并发 并行
  • 安达发|从救火到未雨绸缪:APS生产计划排产软件重塑制造业“危机免疫力“
  • 2025年6月电子学会全国青少年软件编程等级考试(Python一级)真题及答案
  • 添加DNS解析记录时,提醒记录冲突是怎么回事?
  • Python练习2-格式化输出基本数据类型及变量的详细使用
  • Aqara 携手西门子西碳迹SiTANJI,发布亚马逊 CPF 绿标解决方案标杆案例
  • 根据用户id自动切换表查询
  • c语言笔记---结构体