为了项目性能等方面的考虑,有时候有必要为用户经常访问的页面使用缓存机制;在技术上,服务端和前端都有相应的缓存机制。比如传统的session及cookie等等,在微信小程序中,并没有cookie机制,但有本地缓存。小程序官方文档对本地缓存的介绍如下:

每个微信小程序都可以有自己的本地缓存,可以通过 wx.setStorage(wx.setStorageSync)、wx.getStorage(wx.getStorageSync)、wx.clearStorage(wx.clearStorageSync)可以对本地缓存进行设置、获取和清理。同一个微信用户,同一个小程序 storage 上限为 10MB。localStorage 以用户维度隔离,同一台设备上,A 用户无法读取到 B 用户的数据。其中 localStorage 是持久存储的,但是我们不建议将关键信息全部存在 localStorage,以防用户换设备的情况。

上面一句翻译成简洁的人话就是:本地缓存localStorage存在于客户端中,不同用户所对应的缓存数据是相互独立并且因设备而隔离的,而且是持久存储(除非用户清空该小程序的数据)。

在项目开发过程中,我们利用缓存机制的时候,一般的都需要设置一个过期时间,而不管是session还是cookie我们除了可以设置、获取和清理缓存外,我们可以在设置缓存的同时设置一个“过期时间”。而从以上小程序关于数据缓存API的介绍中,我们并没有看到关于数据缓存过期时间设置的API。

那么这样似乎对于很多需要使用到缓存机制的场景留下遗憾,以我们微构网络官方小程序为例,首页的几乎所有的数据全部是通过服务端API提供的数据,如果每次刷新小程序页面都需要重新通过wx.request这个接口拉取数据,那么花在网络请求的时间至少是100ms以上,这不仅不利于用户体验也浪费了计算资源。而如果,直接按照文档中的表面化的应用数据缓存API,那么数据会持久化存储,那么首页中包括案例以及其他动态更新的数据怎么更新?

那么是不是就必须留下这样的遗憾呢?如果果然会留下这样的遗憾,那么我相信腾讯肯定会解决这样的问题的。其实我们可以参考诸如cookie这样的缓存机制,我们自己“造”一个过期时间。在设置某缓存数据A的时候,我们可以同时设置一个过期时间值的数据缓存B;在下一次打开该页面的时候,不仅需要判断数据A是否存在,也需要比较B与当前时间,如果符合要求则使用本地缓存的数据A,否则则重新拉取数据并刷新A和B。以上逻辑翻译成代码则为如下,首先是拉取服务端数据成功后同时设置两个数据缓存,

以上的index_data是我们需要设置的缓存数据,而index_data_expiration则是与之对应的时间数据,其中3000000则是3000s,当用户进入该页面时,进行缓存数据判断:

在项目实践过程中,我们可以根据以上逻辑把这种方法封装起来;此外,缓存的过期时间,我们也可以读取服务端设置的超时时间,这样小程序发布后我们可以在服务端灵活变更调节具体的数值了。

微信小游戏服务器数据持久化,微信小程序wx.setStorage数据缓存实现缓存过期时间...相关推荐

  1. 马化腾:非常看重小程序,小游戏将会是微信互联网的焦点?

    近日举办的第10届2018中国(深圳)IT领袖峰会上,腾讯公司董事会主席兼首席执行官马化腾发表了 "数字中国的机遇与探索" 主题演讲. 会上谈到数字中国的机遇和探索,马化腾提出了& ...

  2. 微信小游戏申请注册流程+开发微信小游戏类目需要具备条件

    微信小游戏申请注册流程+开发微信小游戏类目需要具备条件 在这里先讲一下,小程序和小游戏前面的注册流程都是一样的,在注册完毕登录小程序后台后选择类目时需要注意一下,我下面讲解的是已经通过认证的服务号进行 ...

  3. 猜歌小游戏多功能组合微信小程序源码下载

    这是一款多功能游戏组合的一款小程序 比如猜歌,摇骰子,真心话大冒险等等 php7.2 mysql5.6 1.上微擎框架 2.将后台两个压缩包上传到addons目录下解压 创建小程序应用 3.后台设置一 ...

  4. 空间小游戏显示第三方服务器,如何进入小游戏服务器

    如何进入小游戏服务器 内容精选 换一换 本文提供了分布式数据库中间件DDM产品介绍,快速入门.API接口的新特性的快速入口. IAM的使用对象为管理员:帐号:帐号可以使用所有服务,包括IAM.admi ...

  5. 我的世界服务器组队系统,我的世界小游戏服务器组队指令 | 手游网游页游攻略大全...

    发布时间:2017-10-25 我的世界小绿蛇头颅指令是什么?小绿蛇头颅怎么得?小绿蛇头颅有什么用? 小绿蛇 /give @p skull 1 3 {display:{Name:"Yoshi ...

  6. cudnn7.6.5下载 solitairetheme8_233小游戏下载安装赚钱-233小游戏下载安装最新版v2.29.4.5...

    233小游戏app,一款主打休闲小游戏的游戏盒子软件,网络上最受欢迎的消除闯关类以及双人对抗类之类的小游戏都全部收录,打开手机就能开始玩,游戏中还有超多福利可以免费领取,完成日常任务还可以赚取现金红包 ...

  7. 【Unity3D开发小游戏】《战棋小游戏》Unity开发教程

    一.前言 这次想要做的一个小游戏,或者说一个小Demo,其实是一个简单且传统的战棋战斗场景.初步的设计是:在2D世界里创建一张由六边形地块组成的战斗地图,敌我双方依据体力在地图上轮流行动并向对方发动攻 ...

  8. 在线小游戏,在线小游戏大全,网页在线小游戏大全

    在线小游戏推荐,本在线小游戏来源于中国最知名的在线小游戏网站--爱游戏网:http://www.iiyouxi.com 在线小游戏,小游戏,在线游戏,网页游戏,网页小游戏 区养成网页游戏:http:/ ...

  9. 勇闯掘金小游戏为一款多个小游戏的合集游戏,有五个关卡:找掘金、石头剪刀布、寻找藏宝图、打地鼠、抽奖。基于Vue

    游戏简介 勇闯掘金小游戏为一款多个小游戏的合集游戏,共有五个关卡,分别为:找掘金.石头剪刀布.寻找藏宝图.打地鼠.抽奖.每个环节20分,满分100分. 完整代码下载地址:勇闯掘金小游戏 快速体验 ht ...

最新文章

  1. Java AQS论文翻译
  2. 自己使用的Android框架
  3. what should you do at the new arrival of the place
  4. 数据库连接池的实现及原理
  5. python的django_django能用来做什么
  6. 如何将mysql的数据库渲染到页面_vue.js实现数据库的JSON数据输出渲染到html页面功能示例...
  7. 信息学奥赛一本通C++语言——1016: 整型数据类型存储空间大小
  8. 单向循环链表的增、删、查、改、python实现,超详细讲解
  9. mysql词法分析antlr4_sharding-jdbc之ANTLR4 SQL解析
  10. Http Body 的四种格式
  11. [React Native Android 安利系列]样式与布局的书写
  12. 8个jQuery Mobile基础教程
  13. MySQL索引详细介绍
  14. PHP逆波兰表达式的算法
  15. 用Java山寨一款Flash游戏
  16. c语言hook函数,另类iOS上的C函数hook
  17. 这些年java全栈开发涉及到工具
  18. c语言遍历算法的头文件,图优先遍历算法(C语言版).doc
  19. MIS软件工程师的面试问题与方法
  20. 笔记本无线网卡失效(红叉)故障排除

热门文章

  1. Las Vegas Sands Purchase May Tell More About Macau
  2. 天龙八部怀旧服务器维护,新天龙八部怀旧服 2月18日全服更新维护公告
  3. TeamViewer 14完美中文版
  4. 10 个 VSCode 超级摸鱼神器,确定不试一下?
  5. 游戏开发中的物理介绍
  6. Idea Project文件目录不见了,只剩External Libraries 和 **imi文件
  7. “数据科学家”或许不再性感,但“数据团队”的产业化才刚开始 | 专访领英全球数据科学团队负责人
  8. 中国未来二十年大趋势,你的机遇全在这
  9. SnnGrow快讯:微软 Win7/8.1 今日结束支持,不会再获得安全更新、AI工程化进程加速,人工智能需要怎样的数据?
  10. ChatGpt 能取代人类吗?