码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【微信小程序系列:四】前端利用wx.setStorageSync缓存设置有效时间


    先言:

    简单来说,就是利用缓存,进行有效期的保存,以此前端加以判断,在如登录状态过期,操作过期等场景使用,扩展性还蛮多的。
    官方文档

    实现:

    原理:就是先设置一个缓存,这个缓存值为当前时间加上有效期的时间。缓存会一直存在在本地。当到有效期后,执行判断,对比当前时间和缓存时间,如果现在时间大于缓存的值,证明过期了。

    1. 比如我设置一个缓存有效期是一天,过期后控制台输出‘有效期已过’。1秒等于1000毫秒,86400000毫秒是一天。
        let applyTime = wx.getStorageSync("time"); // 获取时间缓存
         // 先判断存不存在此缓存,如果存在
        if(applyTime){
          // 当前时间大于有效期
            if (new Date().getTime() > applyTime) {
                  // 设置一天有效期新缓存
                  wx.setStorageSync("time", new Date().getTime() + 86400000);
                 //有效期已过,在这执行某些操作
                  console.log('有效期已过') 
                }
        }else{
         // 如果不存在,直接设置一天有效期新缓存
              wx.setStorageSync("time", new Date().getTime() + 604800000);
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    1. 也可以简单封装成给每个缓存的值都加个有效时间,有 存储方法和读取方法:
    /**
     * 设置时效缓存
     * key    存储的key值
     * value  存储的value值 (不填则默认为1)
     * time   有效时间,(单位:毫秒,不填则默认一天)
     */
    function setStorageSyncSecond(key, value, time) {
      value = value ? value : 1
      wx.setStorageSync(key, value)
      let t = time ? time : 86400000
      if (t > 0) { 
        wx.setStorageSync(key + 'dtime', t + new Date().getTime())
      } else {
        wx.removeStorageSync(key)
      }
    }
    
    /**
     * 读取时效缓存
     *  key  存储的key值
     * return 返回有值则有效期未过,返回false或者undefined证明有效期过了、或者该值已不存在
     */
    function getStorageSyncTime(key){
      var deadtime = wx.getStorageSync(key + 'dtime')
      if (deadtime) {
        if (deadtime < new Date().getTime() ) {
          wx.removeStorageSync(key)
          wx.removeStorageSync(key + 'dtime')
          return false
        }else{
          return wx.getStorageSync(key)
         }
      }else{
        return false
      }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    小知识:体验版和正式版小程序缓存数据共享。

    结语:

    上面的代码我也没验证过,我在文档上直接写的,仅供参考,主要是思路,如果出错还望指正。

    最近在玩巫师3,虽然是15年的游戏了,但可玩性还是不错的~

    在这里插入图片描述

    我的哔哩哔哩空间
    Gitee仓库地址:全部特效源码
    其它文章:
    ~关注我看更多简单创意特效:
    文字烟雾效果 html+css+js
    环绕倒影加载特效 html+css
    气泡浮动背景特效 html+css
    简约时钟特效 html+css+js
    赛博朋克风格按钮 html+css
    仿网易云官网轮播图 html+css+js
    水波加载动画 html+css
    导航栏滚动渐变效果 html+css+js
    书本翻页 html+css
    3D立体相册 html+css
    霓虹灯绘画板效果 html+css+js
    记一些css属性总结(一)
    Sass总结笔记
    …等等
    进我主页看更多~

  • 相关阅读:
    图书管理系统(SpringBoot+SpringMVC+MyBatis)
    Articulate360在线学习课件制作工具
    vue API 风格
    当遇到第一个不满足条件的元素后返回这个元素及之后的各元素itertools.dropwhile()
    第8章Linux实操篇-实用指令
    基于SSM的“大学生艺术节”管理系统的设计与实现
    《天天数学》连载54:二月二十三日
    Apache Kafka教程--Kafka新手入门
    HCIP第十六天——VLAN,STP和STP角色选举
    Java之打印流,压缩流,工具包的详细解析
  • 原文地址:https://blog.csdn.net/luo1831251387/article/details/127494733
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号