详解小程序缓存插件(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 网页水印(非图片水印)实现代码
Mar 01 Javascript
在javascript将NodeList作为Array数组处理的方法
Jul 09 Javascript
jquery ajax属性async(同步异步)示例
Nov 05 Javascript
SeaJS入门教程系列之使用SeaJS(二)
Mar 03 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
May 20 Javascript
JavaScript中join()方法的使用简介
Jun 09 Javascript
JavaScript知识点总结之如何提高性能
Jan 15 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
Nov 29 Javascript
angular仿支付宝密码框输入效果
Mar 25 Javascript
如何在 Vue.js 中使用第三方js库
Apr 25 Javascript
vue打包后显示空白正确处理方法
Nov 01 Javascript
Vue组件更新数据v-model不生效的解决
Apr 02 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.MVC的模板标签系统(四)
2006/09/05 PHP
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
2011/11/07 PHP
ThinkPHP基本的增删查改操作实例教程
2014/08/22 PHP
PHP实现的sqlite数据库连接类
2014/12/12 PHP
php自定义类fsocket模拟post或get请求的方法
2015/07/31 PHP
CodeIgniter记录错误日志的方法全面总结
2016/05/17 PHP
php错误日志简单配置方法
2016/07/11 PHP
在js中判断checkboxlist(.net控件客户端id)是否有选中
2013/04/11 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
2013/07/09 Javascript
JavaScript作用域链使用介绍
2013/08/29 Javascript
jquery提取元素里的纯文本不包含span等里的内容
2013/09/30 Javascript
js完美的div拖拽实例代码
2014/01/22 Javascript
jQuery购物网页经典制作案例
2016/08/19 Javascript
BootStrap 超链接变按钮的实现方法
2016/09/25 Javascript
使用grunt合并压缩js和css文件的方法
2017/03/02 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
2018/07/07 Javascript
简述vue路由打开一个新的窗口的方法
2018/11/29 Javascript
javascript实现前端分页效果
2020/06/24 Javascript
ES11新增的这9个新特性,你都掌握了吗
2020/10/15 Javascript
[03:31]DOTA2英雄基础教程 大地之灵
2013/12/17 DOTA
如何基于Python实现电子邮件的发送
2019/12/16 Python
python判断正负数方式
2020/06/03 Python
浅析python实现动态规划背包问题
2020/12/31 Python
CSS3美化表单控件全集
2016/06/29 HTML / CSS
8款使用 CSS3 实现超炫的 Loading(加载)的动画效果
2015/03/17 HTML / CSS
英国计算机产品零售商:Novatech(定制个人电脑、笔记本电脑、工作站和服务器)
2018/01/28 全球购物
For Art’s Sake官网:手工制作的奢华眼镜
2018/12/15 全球购物
德国消费电子产品购物网站:Guter Kauf
2020/09/15 全球购物
婚礼司仪主持词
2014/03/14 职场文书
中国好声音华少广告词
2014/03/17 职场文书
2014年中秋寄语
2014/08/11 职场文书
党员国庆节演讲稿范文2014
2014/09/21 职场文书
关于安全的广播稿
2014/10/23 职场文书
2014年销售工作总结
2014/12/01 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
家长会感言
2015/08/01 职场文书