詳解小程序緩存插件(mrc)
背景
wx.request是小程序提供的API,用于發(fā)起網(wǎng)絡請求,在頻繁并且響應較慢的業(yè)務中的請求,頁面白屏或者loading時間也相應比較長,然而合理的利用緩存是個很好提升界面響應速度,減少網(wǎng)絡資源占用的手段。
mrc提供2種換成模式用于業(yè)務中使用
短期緩存
對于實時性要求相對較低的業(yè)務場景而言,可以使用短期緩存。
短期緩存能夠?qū)⒔涌跀?shù)據(jù)在一定時間內(nèi)緩存起來,在時間范圍內(nèi)再次請求的話,可以直接使用緩存數(shù)據(jù),減少白屏或者loading時間。設置不同的緩存時間來適應不同的業(yè)務,還可以有效的節(jié)約網(wǎng)絡資源
快照緩存
類比搜索引擎的快照,針對請求響應較慢的并且實時性又比較高的場景而言,可以使用快照緩存。
快照緩存每次請求都會先返回上一次緩存數(shù)據(jù)作為結(jié)果返回,然后再去請求,等到請求返回之后再更新緩存,業(yè)務方可以對比2次返回結(jié)果進行局部渲染
使用
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, //選填,定時緩存時間,使用優(yōu)先級,當前配置>全局配置>默認配置
},
})
.then((res) => {
//快照緩存時會多返回一個正式請求的promise對象,用于獲取正式請求的數(shù)據(jù)
return res.req;
})
.then((res) => {
console.log(res);
})
},
})
特性
- 緩存類型為快照緩存時,緩存的數(shù)據(jù)為持久緩存,timeout設置無效
- 緩存類型為快照緩存時,第一個then回調(diào)會帶上正式請求的promise對象,用于下個then回調(diào)獲取正式請求的數(shù)據(jù)
- 不想使用緩存時(enable=false),一樣可以用mrc實例化之后的對象正常請求,支持promise
對比
| 類型 | 是否持久化 | 是否每次都請求 | 實時性 |
|---|---|---|---|
| 快照緩存 | 是 | 是 | 高 |
| 短期緩存 | 否 | 否 | 低 |
配合骨架屏來使用效果更佳?。?!

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

