详解小程序缓存插件(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 相关文章推荐
通过实例理解javascript中没有函数重载的概念
Jun 03 Javascript
jQuery实用技巧必备(上)
Nov 02 Javascript
实例代码详解jquery.slides.js
Nov 16 Javascript
js+css绘制颜色动态变化的圈中圈效果
Jan 27 Javascript
功能强大的Bootstrap使用手册(一)
Aug 02 Javascript
深入分析node.js的异步API和其局限性
Sep 05 Javascript
AngularJS 面试题集锦
Sep 06 Javascript
JS实现标签页切换效果
May 04 Javascript
vue接入腾讯防水墙代码
May 07 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
May 14 Javascript
javascript写一个ajax自动拦截并下载数据代码实例
Sep 07 Javascript
js实现盒子移动动画效果
Aug 09 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
《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
探讨如何把session存入数据库
2013/06/07 PHP
PHP实现可自定义样式的分页类
2016/03/29 PHP
php中使用GD库做验证码
2016/03/31 PHP
PHP实现通过strace定位故障原因的方法
2018/04/29 PHP
js null undefined 空区别说明
2010/06/13 Javascript
jQuery+PHP打造滑动开关效果
2014/12/16 Javascript
Nodejs学习笔记之入门篇
2015/04/16 NodeJs
JavaScript面向对象之私有静态变量实例分析
2016/01/14 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
详解JS数组Reduce()方法详解及高级技巧
2017/08/18 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
nodejs取得当前执行路径的方法
2018/05/13 NodeJs
详解基于webpack&gettext的前端多语言方案
2019/01/29 Javascript
Vue动态路由缓存不相互影响的解决办法
2019/02/19 Javascript
微信小程序实现的一键拨号功能示例
2019/04/24 Javascript
Python 命令行非阻塞输入的小例子
2013/09/27 Python
Python 获取当前所在目录的方法详解
2017/08/02 Python
python sys.argv[]用法实例详解
2018/05/25 Python
python实现时间o(1)的最小栈的实例代码
2018/07/23 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
Python正则表达式急速入门(小结)
2019/12/16 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
css3实现画半圆弧线的示例代码
2017/11/06 HTML / CSS
Data URI scheme详解和使用实例及图片base64编码实现方法
2014/05/08 HTML / CSS
意大利和国际最佳时尚品牌:Drestige
2019/12/28 全球购物
一些Unix笔试题和面试题
2012/09/25 面试题
高中三年学习生活的自我评价
2013/10/10 职场文书
临床医学专业毕业生的自我评价
2013/10/17 职场文书
实习生求职自荐信
2014/02/07 职场文书
建筑工程专业大学生求职信
2014/04/23 职场文书
小学生学雷锋演讲稿
2014/04/25 职场文书
vue里使用create, mounted调用方法
2022/04/26 Vue.js
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
2022/04/29 Servers
windows server2016安装oracle 11g的图文教程
2022/07/15 Servers