前端本地缓存:封装localStorage支持设置过期时间、命名空间 吴小明

摘要:
-当选中项目后,每隔5秒缓存一次当前页面所填内容-缓存至localStorage中,过期时间为7日,到期后自动删除当前项目的缓存,namespace为【visitPlanList】-中途退出软件时,下次进入新增页,选中之前的项目,会回显对应的内容-如果手动点击【放弃】按钮,并确认退出,那么会根据当前选中的项目id,删除对应的缓存-新增提交时,以本次提交时的项目id为依据,将visitPlanLis
- 当选中项目后,每隔5秒缓存一次当前页面所填内容
- 缓存至localStorage中,过期时间为7日,到期后自动删除当前项目的缓存,namespace为【visitPlanList】
- 中途退出软件时,下次进入新增页,选中之前的项目,会回显对应的内容
- 如果手动点击【放弃】按钮,并确认退出,那么会根据当前选中的项目id,删除对应的缓存
- 新增提交时,以本次提交时的项目id为依据,将visitPlanList中对应的缓存删除
- 缓存仅针对新增,编辑时不操作缓存,具体代码见@/views/Application/VisitManage/Plan/Add/index.vue

1、utils/index.js中定义myLocalStorage ,支持设置、获取、删除

//拜访管理-前端缓存 namespace:命名空间,visitPlanList=拜访计划  visitFeedbackList=拜访反馈
export const myLocalStorage ={
  set(namespace = 'visitPlanList', key, data, time) {
    const storage = JSON.parse(localStorage.getItem(namespace)) ||{}
    storage[key] ={
      data,
      createTime: Date.now(),
      lifeTime: time || 1000 * 60 * 60 * 24 * 7 //默认设置过期时间:7天
}
    localStorage.setItem(namespace, JSON.stringify(storage))
  },
  get(namespace = 'visitPlanList', key) {
    const storage = JSON.parse(localStorage.getItem(namespace)) ||{}
    if (!storage[key]) returnconst { data, createTime, lifeTime } =storage[key]
    //当前时间 - 存入时间 > 过期时间
    if (Date.now() - createTime >lifeTime) {
      deletestorage[key]
      localStorage.setItem(namespace, JSON.stringify(storage))
      return null} else{
      returndata
    }
  },
  delete(namespace = 'visitPlanList', key) {
    const storage = JSON.parse(localStorage.getItem(namespace)) ||{}
    if (!storage[key]) return
    deletestorage[key]
    localStorage.setItem(namespace, JSON.stringify(storage))
  }
}

2、页面使用

import { myLocalStorage } from '@/utils'
    //存储缓存数据
setStorage() {
      if (this.id) returnconst timer = setInterval(() =>{
        const page1Data = this.$refs.page1Ref.page1Data
        if (page1Data.projectId <= 0) returnconst params = { page1Data, page2Data: this.page2Data }
        myLocalStorage.set('visitPlanList', page1Data.projectId, params)
      }, 5000)
      this.$once('hook:beforeDestroy', () =>{
        clearInterval(timer)
      })
    },
    //获取缓存数据
getStorage(projectId) {
      if (this.id) returnconst params = myLocalStorage.get('visitPlanList', projectId)
      if (!params) return
      this.$refs.page1Ref.page1Data =params.page1Data
      this.page2Data =params.page2Data
    },
    //删除缓存数据
deleteStorage() {
      if (this.id) returnconst projectId = this.$refs.page1Ref.page1Data.projectId
      const params = myLocalStorage.get('visitPlanList', projectId)
      if (params) myLocalStorage.delete('visitPlanList', projectId)
    }

存储的数据结构:

前端本地缓存:封装localStorage支持设置过期时间、命名空间 吴小明第1张

免责声明:文章转载自《前端本地缓存:封装localStorage支持设置过期时间、命名空间 吴小明》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇H5动效的常见制作方法C# dictionary下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Node.js实现浏览器缓存

图 1 使用缓存的流程示意图 下面从三个规则分别来讲: 添加Expires或Cache-Control到报文头中; 配置Etags; 让Ajax缓存。 条件请求 请求头部设置了If-Modified-Since,浏览器向服务器请求资源,服务端返回304状态码,浏览器则会使用本地文件。 var handle = function (req, res)...

Web前端测试要点

Web前端测试维度: 功能性:功能准确性、兼容性 易用性:易学性、易理解性、易操作性、吸引性 可靠性:成熟性、容错性、稳定性、可恢复性、安全性 可移植性:适应性、易安装性、兼容性 可维护性:易分析性、易测试性 效率:时间特性、资源利用性 调优点: 1. 减少http请求的数量 2. 用好浏览器缓存机制 3. 利用GZIP压缩机制:只针对文本类资源有效...

技术实践第三期|HashTag在Redis集群环境下的使用

​简介:欢迎了解友盟+技术干货第三期内容:Redis集群环境如何按照前缀批量删除缓存。希望能对开发者们在实际应用中有所帮助。 一、背景 数据源列表添加缓存支持,types字段可传多值,如app, mini, web等,会构建如下缓存key, application_list:123456:app application_list:123456:mini...

安卓手机清缓存方式

1,安卓手机清除缓存访问:debugx5.qq.com 2, 安卓手机清除缓存三步走:1、点击 debugtbs.qq.com 后退出;2、点击 debugmm.qq.com/?forcex5=true 后退出;3、访问 debugx5.qq.com,在这个页面清除缓存;...

serviceWorker

推荐阅读:Service Worker 简介 在 Service Worker 之前,我们一般用 AppCache 来实现离线体验(就是配置 Manifest 文件的方式),这个会有很多问题(博主曾尝试过,体验非常差,非常难用,而且不灵活)。 而 Service Worker 可以写脚本去灵活自由地控制缓存。 基本使用: 1. 注册 <!-- /re...

关于Intege.valueOf()的使用

原文链接:https://blog.csdn.net/weixin_37650458/article/details/85212730 1.Integer. valueOf()方法的作用     Integer. valueOf()可以将基本类型int转换为包装类型Integer,或者将String转换成Integer,String如果为Null或“”都会...