详解小程序缓存插件(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 覆盖和重载 函数
Sep 25 Javascript
jQuery设置和移除文本框默认值的方法
Mar 09 Javascript
js实现div层缓慢收缩与展开的方法
May 11 Javascript
Javascript原型链的原理详解
Jan 05 Javascript
jquery自适应布局的简单实例
May 28 Javascript
JS使用eval()动态创建变量的方法
Jun 03 Javascript
TypeScript中使用getElementXXX()的示例代码
Sep 12 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
Apr 10 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
May 29 jQuery
vue实现把接口单独存放在一个文件方式
Aug 13 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
Aug 19 Javascript
详解Vue的七种传值方式
Feb 08 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
解析smarty 截取字符串函数 truncate的用法介绍
2013/06/20 PHP
destoon安装出现Internal Server Error的解决方法
2014/06/21 PHP
ThinkPHP3.2.3实现分页的方法详解
2016/06/03 PHP
php简单读取.vcf格式文件的方法示例
2017/09/02 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
Jquery实战_读书笔记2 选择器
2010/01/22 Javascript
js ondocumentready onmouseover onclick onmouseout 样式
2010/07/22 Javascript
JavaScript图像延迟加载库Echo.js
2016/04/05 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
2016/12/04 Javascript
jquery将标签元素的高设为屏幕的百分比
2017/04/19 jQuery
ES6新特性二:Iterator(遍历器)和for-of循环详解
2017/04/20 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
全站最详细的Vuex教程
2018/04/13 Javascript
JS基于ES6新特性async await进行异步处理操作示例
2019/02/02 Javascript
详解微信小程序用定时器实现倒计时效果
2019/04/30 Javascript
详解可以用在VS Code中的正则表达式小技巧
2019/05/14 Javascript
Python如何快速实现分布式任务
2017/07/06 Python
Python使用MD5加密算法对字符串进行加密操作示例
2018/03/30 Python
对python中Librosa的mfcc步骤详解
2019/01/09 Python
详解Python字符串切片
2019/05/20 Python
python 判断字符串中是否含有汉字或非汉字的实例
2019/07/15 Python
Python栈的实现方法示例【列表、单链表】
2020/02/22 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
2020/06/27 Python
Python常用数据分析模块原理解析
2020/07/20 Python
python 读取、写入txt文件的示例
2020/09/27 Python
Python headers请求头如何实现快速添加
2020/11/03 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
德国足球商店:OUTFITTER
2019/05/06 全球购物
写出二分查找算法的两种实现
2013/05/13 面试题
教师实习自我鉴定
2013/12/18 职场文书
职务说明书范文
2014/05/07 职场文书
个人授权委托书模板
2014/09/14 职场文书
安全生产标语大全
2014/10/06 职场文书
2016婚礼主持词开场白
2015/11/24 职场文书
检讨书怎么写?
2019/06/21 职场文书
SQL Server中交叉联接的用法详解
2021/04/22 SQL Server