詳解小程序緩存插件(mrc)
背景
wx.request是小程序提供的API,用于發(fā)起網(wǎng)絡(luò)請(qǐng)求,在頻繁并且響應(yīng)較慢的業(yè)務(wù)中的請(qǐng)求,頁(yè)面白屏或者loading時(shí)間也相應(yīng)比較長(zhǎng),然而合理的利用緩存是個(gè)很好提升界面響應(yīng)速度,減少網(wǎng)絡(luò)資源占用的手段。
mrc提供2種換成模式用于業(yè)務(wù)中使用
短期緩存
對(duì)于實(shí)時(shí)性要求相對(duì)較低的業(yè)務(wù)場(chǎng)景而言,可以使用短期緩存。
短期緩存能夠?qū)⒔涌跀?shù)據(jù)在一定時(shí)間內(nèi)緩存起來(lái),在時(shí)間范圍內(nèi)再次請(qǐng)求的話,可以直接使用緩存數(shù)據(jù),減少白屏或者loading時(shí)間。設(shè)置不同的緩存時(shí)間來(lái)適應(yīng)不同的業(yè)務(wù),還可以有效的節(jié)約網(wǎng)絡(luò)資源
快照緩存
類比搜索引擎的快照,針對(duì)請(qǐng)求響應(yīng)較慢的并且實(shí)時(shí)性又比較高的場(chǎng)景而言,可以使用快照緩存。
快照緩存每次請(qǐng)求都會(huì)先返回上一次緩存數(shù)據(jù)作為結(jié)果返回,然后再去請(qǐng)求,等到請(qǐng)求返回之后再更新緩存,業(yè)務(wù)方可以對(duì)比2次返回結(jié)果進(jìn)行局部渲染
使用
mrc以一種侵入式最小的方式封裝了原生的resquest API,擴(kuò)展原生API的功能,可以支持promise以及2種緩存方式。
//app.js
//引入request緩存插件
import Mrc from './dist/mrc.min';
//實(shí)例化一個(gè)全局引用
App({
wxp: new Mrc({
prefix: '___CACHE___', //選填,存儲(chǔ)字段前綴,默認(rèn)___CACHE___
timeout: 600000, //選填,緩存多長(zhǎng)時(shí)間,單位ms,默認(rèn)10分鐘
}),
})
//page.js
const app = getApp()
let {wxp} = app
Page({
data: {
},
onLoad: function () {
wxp.request({
url: 'http://xxxxxx',
cache: {
enable: true, //選填,是否開(kāi)啟緩存,默認(rèn)false
type: 'snapshot', //選填,開(kāi)啟緩存類型,定時(shí)(timeout)、快照(snapshot),默認(rèn)定時(shí)
timeout: 600000, //選填,定時(shí)緩存時(shí)間,使用優(yōu)先級(jí),當(dāng)前配置>全局配置>默認(rèn)配置
},
})
.then((res) => {
//快照緩存時(shí)會(huì)多返回一個(gè)正式請(qǐng)求的promise對(duì)象,用于獲取正式請(qǐng)求的數(shù)據(jù)
return res.req;
})
.then((res) => {
console.log(res);
})
},
})
特性
- 緩存類型為快照緩存時(shí),緩存的數(shù)據(jù)為持久緩存,timeout設(shè)置無(wú)效
- 緩存類型為快照緩存時(shí),第一個(gè)then回調(diào)會(huì)帶上正式請(qǐng)求的promise對(duì)象,用于下個(gè)then回調(diào)獲取正式請(qǐng)求的數(shù)據(jù)
- 不想使用緩存時(shí)(enable=false),一樣可以用mrc實(shí)例化之后的對(duì)象正常請(qǐng)求,支持promise
對(duì)比
| 類型 | 是否持久化 | 是否每次都請(qǐng)求 | 實(shí)時(shí)性 |
|---|---|---|---|
| 快照緩存 | 是 | 是 | 高 |
| 短期緩存 | 否 | 否 | 低 |
配合骨架屏來(lái)使用效果更佳?。?!

總結(jié)
緩存插件的使用可以有效的提升頁(yè)面打開(kāi)速度,并且在頻繁的網(wǎng)絡(luò)請(qǐng)求中可以有效的節(jié)約服務(wù)器資源。具體的調(diào)用方式和源碼,請(qǐng)看 github ,最后求start
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Javascript實(shí)現(xiàn)簡(jiǎn)單二級(jí)下拉菜單實(shí)例
這篇文章主要介紹Javascript實(shí)現(xiàn)二級(jí)下拉菜單的具體過(guò)程,需要的朋友可以參考下2014-06-06
echarts拖拽滑塊dataZoom-slider自定義樣式簡(jiǎn)單適配移動(dòng)端
在電腦端和移動(dòng)端的數(shù)據(jù)展示中,針對(duì)移動(dòng)端的特殊性,進(jìn)行了一系列優(yōu)化措施,這篇文章主要介紹了echarts拖拽滑塊dataZoom-slider自定義樣式簡(jiǎn)單適配移動(dòng)端的相關(guān)資料,需要的朋友可以參考下2024-09-09
JavaScript中對(duì)象property的讀取和寫入方法介紹
這篇文章主要介紹了JavaScript中對(duì)象property的讀取和寫入方法介紹,本文講解了原型繼承鏈中property的讀取、原型繼承鏈中property的寫入等內(nèi)容,需要的朋友可以參考下2014-12-12
JavaScript實(shí)現(xiàn)文字展開(kāi)和收起效果
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)文字展開(kāi)和收起效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
擁有一個(gè)屬于自己的javascript表單驗(yàn)證插件
這篇文章主要幫助大家擁有一個(gè)屬于自己的javascript表單驗(yàn)證插件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-03-03
JavaScript實(shí)現(xiàn)簡(jiǎn)單的Markdown語(yǔ)法解析器
Markdown 是一種輕量級(jí)標(biāo)記語(yǔ)言, 它允許人們使用易讀易寫的純文本格式編寫文檔,然后轉(zhuǎn)換成有效的 XHTML(或者HTML)文檔。本文將利用JavaScript實(shí)現(xiàn)簡(jiǎn)單的Markdown語(yǔ)法解析器,感興趣的可以了解一下2023-03-03
微信小程序?qū)崿F(xiàn)的3d輪播圖效果示例【基于swiper組件】
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)的3d輪播圖效果,結(jié)合實(shí)例形式分析了微信小程序基于swiper組件相關(guān)屬性設(shè)置、事件響應(yīng)操作技巧,需要的朋友可以參考下2018-12-12

