详解小程序缓存插件(mrc)


Posted in Javascript onAugust 17, 2018

背景

wx.request是小程序提供的API,用于发起网络请求,在频繁并且响应较慢的业务中的请求,页面白屏或者loading时间也相应比较长,然而合理的利用缓存是个很好提升界面响应速度,减少网络资源占用的手段。

mrc提供2种换成模式用于业务中使用

短期缓存

对于实时性要求相对较低的业务场景而言,可以使用短期缓存

短期缓存能够将接口数据在一定时间内缓存起来,在时间范围内再次请求的话,可以直接使用缓存数据,减少白屏或者loading时间。设置不同的缓存时间来适应不同的业务,还可以有效的节约网络资源

快照缓存

类比搜索引擎的快照,针对请求响应较慢的并且实时性又比较高的场景而言,可以使用快照缓存。

快照缓存每次请求都会先返回上一次缓存数据作为结果返回,然后再去请求,等到请求返回之后再更新缓存,业务方可以对比2次返回结果进行局部渲染

使用

mrc以一种侵入式最小的方式封装了原生的resquest API,扩展原生API的功能,可以支持promise以及2种缓存方式。

//app.js

//引入request缓存插件
import Mrc from './dist/mrc.min';

//实例化一个全局引用
App({
 wxp: new Mrc({
  prefix: '___CACHE___',   //选填,存储字段前缀,默认___CACHE___
  timeout: 600000,    //选填,缓存多长时间,单位ms,默认10分钟
 }),
})
//page.js
const app = getApp()
let {wxp} = app
Page({
 data: {

 },
 onLoad: function () {
  wxp.request({
   url: 'http://xxxxxx',
   cache: {
    enable: true,    //选填,是否开启缓存,默认false
    type: 'snapshot',   //选填,开启缓存类型,定时(timeout)、快照(snapshot),默认定时
    timeout: 600000,    //选填,定时缓存时间,使用优先级,当前配置>全局配置>默认配置
   },
  })
   .then((res) => {
    //快照缓存时会多返回一个正式请求的promise对象,用于获取正式请求的数据
    return res.req;
   })
   .then((res) => {
    console.log(res);

   })
 },
})

特性

  1. 缓存类型为快照缓存时,缓存的数据为持久缓存,timeout设置无效
  2. 缓存类型为快照缓存时,第一个then回调会带上正式请求的promise对象,用于下个then回调获取正式请求的数据
  3. 不想使用缓存时(enable=false),一样可以用mrc实例化之后的对象正常请求,支持promise

对比

类型 是否持久化 是否每次都请求 实时性
快照缓存
短期缓存

配合骨架屏来使用效果更佳!!!

详解小程序缓存插件(mrc)

总结

缓存插件的使用可以有效的提升页面打开速度,并且在频繁的网络请求中可以有效的节约服务器资源。具体的调用方式和源码,请看 github ,最后求start

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
调试Node.JS的辅助工具(NodeWatcher)
Jan 04 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器
Jun 21 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
Oct 14 Javascript
BootStrap文件上传样式超好看【持续更新】
May 10 Javascript
jquery Banner轮播选项卡
Dec 26 Javascript
js实现背景图自适应窗口大小
Jan 10 Javascript
浅谈angularjs $http提交数据探索
Jan 20 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
Sep 21 jQuery
AngularJS监听ng-repeat渲染完成的两种方法
Jan 16 Javascript
webpack4 css打包压缩问题的解决
May 18 Javascript
JS实现横向轮播图(中级版)
Jan 18 Javascript
36个正则表达式(开发效率提高80%)
Nov 17 Javascript
layui 设置table 行的高度方法
Aug 17 #Javascript
微信小程序数据分析之自定义分析的实现
Aug 17 #Javascript
jQuery实现的页面弹幕效果【测试可用】
Aug 17 #jQuery
layui的table中显示图片方法
Aug 17 #Javascript
layerUI下的绑定事件实例代码
Aug 17 #Javascript
JS实现的视频弹幕效果示例
Aug 17 #Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
Aug 17 #Javascript
You might like
php在线生成ico文件的代码
2007/10/09 PHP
php 图片上传类代码
2009/07/17 PHP
解析strtr函数的效率问题
2013/06/26 PHP
php微信公众平台配置接口开发程序
2016/09/22 PHP
JavaScript游戏之是男人就下100层代码打包
2010/11/08 Javascript
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
超链接怎么正确调用javascript函数
2016/05/23 Javascript
JS中如何比较两个Json对象是否相等实例代码
2016/07/13 Javascript
Javascript 实现简单计算器实例代码
2016/10/23 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
详解node.js中的npm和webpack配置方法
2018/01/21 Javascript
详解JQuery基础动画操作
2019/04/12 jQuery
Vue组件系列开发之模态框
2019/04/18 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
[56:29]Secret vs Optic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python中stdout输出不缓存的设置方法
2014/05/29 Python
wxPython事件驱动实例详解
2014/09/28 Python
解析Python中的生成器及其与迭代器的差异
2016/06/20 Python
virtualenv实现多个版本Python共存
2017/08/21 Python
python 筛选数据集中列中value长度大于20的数据集方法
2018/06/14 Python
快速解决pandas.read_csv()乱码的问题
2018/06/15 Python
解决TensorFlow GPU版出现OOM错误的问题
2020/02/03 Python
Python requests获取网页常用方法解析
2020/02/20 Python
python如何变换环境
2020/07/21 Python
Python大批量搜索引擎图像爬虫工具详解
2020/11/16 Python
最新pycharm安装教程
2020/11/18 Python
Python 实现PS滤镜的旋涡特效
2020/12/03 Python
分享CSS3中必须要知道的10个顶级命令
2012/04/26 HTML / CSS
微信html5页面调用第三方位置导航的示例
2018/03/14 HTML / CSS
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
理货员的岗位职责
2013/11/23 职场文书
保密协议书范本
2014/04/22 职场文书
教师党员公开承诺事项
2014/05/28 职场文书
八项规定自查自纠报告及整改措施
2014/10/26 职场文书
2014年健康教育工作总结
2014/11/20 职场文书
Windows Server 版本 20H2 于 8 月 9 日停止支持,Win10 版本 21H1 将于 12 月结束支
2022/07/23 数码科技