`
郭丶小川
  • 浏览: 33909 次
社区版块
存档分类
最新评论

《转》小程序之本地缓存

阅读更多
目前,微信给每个小程序提供了10M的本地缓存空间
有了本地缓存,你的小程序可以做到:
离线应用(已测试在无网络的情况下,可以操作缓存数据)
流畅的用户体验
减少网络请求,节省服务器资源
哪些数据适合方缓存:
热数据
静态数据(用户数据,服务器授权ID等)
网络地址(图片、文件等网络地址)
分页列表数据及详情内容
一般的缓存系统采用键值对的方式完成数据插入和读取,通过对key进行一次Hash算法得到一个唯一值,并与value绑定起来;查询的时候对根据Hash后的key查询,算法空间复杂度O(1);
小程序本地缓存的实现基于上述方式实现。但是数据究竟是存储在ROM,还是存储在RAM后进行持久化,这个问题有待考究。
对本地缓存数据操作分为同步和异步两种。同步方法有成功回调函数,表示数    据处理成功后的操作。下面是小程序提供本地缓存操作接口:
[td]
操作 异步方法 同步方法
插入 wx.setStorage wx.setStorageSync
读取 wx.getStorage wx.getStorageSync
删除 wx.removeStorage wx.removeStorageSync
清空 wx.clearStorage wx.clearStorageSync
获取缓存信息 wx.getStorageInfo wx.getStorageInfoSync
以Sync结尾都是同步方法。同步方法和异步方法的区别是:
同步方法会堵塞当前任务,直到同步方法处理返回。
异步方法不会塞当前任务。
6.下面以插入缓存的两个方法说明同步和异步的区别:
先调用异步方法,再调用同步方法
Page({
save: function(e){
console.log('开始保存')
wx.setStorage({
   key: 'key1',
   data: 'data1',
   success: function(res){
     console.log('异步保存成功')
   }
})
wx.setStorageSync('key2', 'data2')
console.log('同步保存成功')
}
})
执行结果:

可以看出,同步方法比异步方法先保存成功,说明异步方法没有阻塞当前任务。
先调用同步方法,再调用异步方法
Page({
save: function(e){
console.log('开始保存')
wx.setStorageSync('key2', 'data2')
console.log('同步保存成功')
wx.setStorage({
   key: 'key1',
   data: 'data1',
   success: function(res){
     console.log('异步保存成功')
   }
})
}
})
执行结果:

可以看出,异步方法只有等到同步方法执行成功才会执行。
缓存API提供了一个获取本地缓存信息的接口wx.getStorageInfo,有了它,开发者可以在已有api上再次封装,比如加入缓存时间、不覆盖插入、批量删除、判断当前缓存大小等。
最后一个是缓存隔离级别的问题:
同一手机,不同小程序应用,至少在逻辑存储上肯定不是共享缓存,满足应用级别隔离。
同一手机,同一个小程序,不同微信用户扫码使用,经测试,也不共享缓存,目前测试条件下,是用户级别隔离。
同一手机,同一个小程序,同一微信用户两次扫码使用,经测试,是共享缓存。
同一手机,同一个小程序,不同微信用户切换使用(分别扫码两次),经测试,同一个用户共享缓存,不同用户间不共享缓存。
目前可以推断在真机调试条件下,每个小程序扫码用户都会分配10M的本地缓存。
以上是个人在真机测试得到的结果,结果不一定完全准确,仅供参考。

原文链接:http://bbs.jointforce.com/topic/23465
分享到:
评论

相关推荐

    本地缓存与分布式缓存优缺点,使用

    本地缓存是指在应用程序内部的缓存组件,其最大优点是应用程序和缓存处于同一个进程内部,请求缓存非常快速,没有过多的网络开销等。在单应用不需要集群支持或者集群情况下各节点无需互相通知的场景下使用本地缓存较...

    微信小程序之本地缓存

    目前,微信给每个小程序提供了10M的本地缓存空间 有了本地缓存,你的小程序可以做到: 离线应用(已测试在无网络的...小程序本地缓存的实现基于上述方式实现。但是数据究竟是存储在ROM,还是存储在RAM后进行持久化,这

    微信小程序接口封装,以及本地缓存方法封装和使用

    本篇文章将详细讲解如何对微信小程序的接口进行封装,以及如何实现本地缓存方法的封装与使用。 首先,我们要了解微信小程序的API体系。微信小程序的API包括网络请求、用户信息获取、文件操作、地理位置、设备信息等...

    小程序数据缓存机制应用实现.docx

    在微信小程序的开发中,数据缓存机制是一个重要的功能,它允许开发者将数据存储在用户的本地,以便在后续的页面加载或应用使用中快速访问,提高用户体验。本篇文章主要探讨了如何实现小程序的数据缓存机制,并通过...

    微信小程序基于本地缓存实现点赞功能的方法

    微信小程序基于本地缓存实现点赞功能的方法 微信小程序基于本地缓存实现点赞功能的方法是指在微信小程序中使用本地缓存来实现点赞功能的方法。这种方法主要涉及到微信小程序界面布局、事件响应及缓存操作等相关实现...

    微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解

    本地缓存、异步缓存和同步缓存是小程序缓存的三种主要形式。以下是对这些概念的详细解释: 1. **本地缓存**:本地缓存允许开发者在小程序内部存储数据,类似于Web开发中的localStorage。微信小程序提供了`wx....

    小程序清理本地缓存的方法

    3.wx.removeStorage接口函数:这个接口函数用于从本地缓存中异步删除指定key对应内容 清除前: 清除后: 4.wx.removeStorageSync接口函数:这个函数用于从本地缓存中同步删除指定key对应的内容 清除前: 清除...

    微信小程序与本地数据库的进行基础数据交互的案例资源

    在微信小程序开发中,与本地数据库进行数据交互是常见的需求,尤其在实现用户信息存储、商品管理、订单处理等功能时。本案例资源提供了一个全面的示例,涵盖了从后端Java服务到微信小程序前端,再到数据库操作的完整...

    微信小程序如何修改本地缓存key中单个数据的详解

    在微信小程序中,本地缓存是一种重要的数据存储方式,它允许开发者暂时保存用户数据,即使在小程序关闭后也能保持这些数据。本地缓存通常用于存储一些不敏感且不需要实时更新的信息,例如用户设置、部分界面状态等。...

    MAC版本outlook本地缓存路径

    3. **定位到Outlook文件夹**:在`GroupContainers`文件夹中找到`UBF8T346G9.Office`(这通常代表了Office应用程序组),然后进入该文件夹下的`Outlook`文件夹即可看到本地缓存的数据。 #### 四、Outlook for Mac ...

    iscsi本地缓存(支持多盘符)

    3. 集成ISCSI驱动:确保服务器的ISCSI驱动支持本地缓存功能,这通常需要更新或升级驱动程序。 4. 配置ISCSI目标和发起者:在ISCSI存储端设置目标,服务器端设置发起者,并建立连接。 5. 开启缓存功能:在ISCSI客户端...

    spring简单的缓存

    在IT行业中,缓存是一种非常重要的技术,它能够提高应用程序的性能和响应速度,通过将经常访问的数据存储在快速访问的内存中,避免了频繁的数据库查询或计算。本示例将聚焦于“Spring简单的缓存”实现,帮助开发者...

    一个基于微信小程序的本地生活项目

    本项目“一个基于微信小程序的本地生活项目”旨在展示如何利用微信小程序进行本地生活服务类应用的开发,涵盖了微信小程序的基础概念、页面布局、API调用、接口数据请求以及数据绑定逻辑等多个核心知识点。...

    微信小程序本地缓存数据增删改查实例详解

    本篇文章将详细解析微信小程序本地缓存数据的增删改查操作。 1. **添加数据** 微信小程序提供了`wx.setStorageSync`方法用于存储数据到本地缓存。在这个例子中,我们有一个用户对象`user`,包含姓名`name`和性别`...

    本地生活小程序源码(可用于毕业设计).zip

    8. **本地存储**:小程序支持本地缓存数据,可以用来存储用户偏好、临时数据等,提升用户体验。 9. **微信小程序调试**:开发者工具提供了真机预览和模拟器调试功能,便于检查和修复代码问题。 10. **发布与更新**...

    MSSQL 数据缓存到本地示例

    3. **缓存更新**:当服务器数据发生变化时,自动或手动同步更新本地缓存。 4. **性能监控**:跟踪缓存命中率,评估缓存效果。 "DATABASE"文件可能是数据库的备份或脚本文件,用于在本地重建或初始化缓存所需的数据...

    Caffeine本地缓存

    Caffeine是一个高性能的本地缓存库,专为Java 8设计,被广泛应用于需要快速访问数据的场景,尤其在Spring 5之后成为了默认的缓存实现,替代了原本的Guava缓存。本地缓存的优势在于它可以避免网络通信带来的延迟,...

Global site tag (gtag.js) - Google Analytics