详解小程序缓存插件(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 相关文章推荐
js报错 Object doesn't support this property or method的原因分析
Mar 31 Javascript
extjs 初始化checkboxgroup值的代码
Sep 21 Javascript
JavaScript在多浏览器下for循环的使用方法
Nov 07 Javascript
jquery动态更换设置背景图的方法
Mar 25 Javascript
AngularJS基础 ng-mouseover 指令简单示例
Aug 02 Javascript
Bootstrap实现input控件失去焦点时验证
Aug 04 Javascript
JavaScript实现经典排序算法之选择排序
Dec 28 Javascript
vue-cli webpack 开发环境跨域详解
May 18 Javascript
Express下采用bcryptjs进行密码加密的方法
Feb 07 Javascript
微信小程序自定义底部弹出框
Nov 16 Javascript
基于jQuery拖拽事件的封装
Nov 29 jQuery
vue使用节流函数的踩坑实例指南
May 20 Vue.js
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 无限级分类 获取顶级分类ID
2016/03/13 PHP
firefox下frameset取不到值的解决方法
2010/09/06 Javascript
Javascript将string类型转换int类型
2010/12/09 Javascript
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
javascript中定义私有方法说明(private method)
2014/01/27 Javascript
js使用removeChild方法动态删除div元素
2014/08/01 Javascript
javascript截取字符串小结
2015/04/28 Javascript
jQuery插件HighCharts绘制2D金字塔图效果示例【附demo源码下载】
2017/03/09 Javascript
为Jquery EasyUI 组件加上清除功能的方法(详解)
2017/04/13 jQuery
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
vue之nextTick全面解析
2017/05/17 Javascript
解决v-for中使用v-if或者v-bind:class失效的问题
2018/09/25 Javascript
JS实现的tab页切换效果完整示例
2018/12/18 Javascript
jQuery实现ajax的嵌套请求案例分析
2019/02/16 jQuery
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
Node.js系列之连接DB的方法(3)
2019/08/30 Javascript
Python随机生成带特殊字符的密码
2016/03/02 Python
Numpy数组的保存与读取方法
2018/04/04 Python
python浪漫表白源码
2019/04/05 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
2020/02/29 Python
如何基于windows实现python定时爬虫
2020/05/01 Python
使用BeautifulSoup4解析XML的方法小结
2020/12/07 Python
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
2018/09/19 HTML / CSS
Fabletics官网:美国运动服饰品牌,由好莱坞女演员凯特·哈德森创立
2019/10/19 全球购物
2019年Java面试必问之经典试题
2012/09/12 面试题
电气技术员岗位职责
2013/11/19 职场文书
大学生新学期计划书
2014/04/28 职场文书
大学社团计划书
2014/05/01 职场文书
毕业证委托书范文
2014/09/26 职场文书
批评与自我批评范文
2014/10/15 职场文书
趣味运动会开幕词
2015/01/28 职场文书
小学校长个人总结
2015/03/03 职场文书
小学语文教师研修日志
2015/11/13 职场文书
2016年秋季运动会加油稿
2015/12/21 职场文书
浅谈MySQL user权限表
2021/06/18 MySQL
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android