詳解小程序緩存插件(mrc)
背景
wx.request
是小程序提供的API,用于發(fā)起網(wǎng)絡(luò)請求,在頻繁并且響應(yīng)較慢的業(yè)務(wù)中的請求,頁面白屏或者loading時(shí)間也相應(yīng)比較長,然而合理的利用緩存是個(gè)很好提升界面響應(yīng)速度,減少網(wǎng)絡(luò)資源占用的手段。
mrc提供2種換成模式用于業(yè)務(wù)中使用
短期緩存
對于實(shí)時(shí)性
要求相對較低的業(yè)務(wù)場景而言,可以使用短期緩存
。
短期緩存能夠?qū)⒔涌跀?shù)據(jù)在一定時(shí)間內(nèi)緩存起來,在時(shí)間范圍內(nèi)再次請求的話,可以直接使用緩存數(shù)據(jù),減少白屏或者loading時(shí)間。設(shè)置不同的緩存時(shí)間來適應(yīng)不同的業(yè)務(wù),還可以有效的節(jié)約網(wǎng)絡(luò)資源
快照緩存
類比搜索引擎的快照,針對請求響應(yīng)較慢的并且實(shí)時(shí)性又比較高的場景而言,可以使用快照緩存。
快照緩存每次請求都會(huì)先返回上一次緩存數(shù)據(jù)作為結(jié)果返回,然后再去請求,等到請求返回之后再更新緩存,業(yè)務(wù)方可以對比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, //選填,緩存多長時(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, //選填,是否開啟緩存,默認(rèn)false type: 'snapshot', //選填,開啟緩存類型,定時(shí)(timeout)、快照(snapshot),默認(rèn)定時(shí) timeout: 600000, //選填,定時(shí)緩存時(shí)間,使用優(yōu)先級,當(dāng)前配置>全局配置>默認(rèn)配置 }, }) .then((res) => { //快照緩存時(shí)會(huì)多返回一個(gè)正式請求的promise對象,用于獲取正式請求的數(shù)據(jù) return res.req; }) .then((res) => { console.log(res); }) }, })
特性
- 緩存類型為快照緩存時(shí),緩存的數(shù)據(jù)為持久緩存,timeout設(shè)置無效
- 緩存類型為快照緩存時(shí),第一個(gè)then回調(diào)會(huì)帶上正式請求的promise對象,用于下個(gè)then回調(diào)獲取正式請求的數(shù)據(jù)
- 不想使用緩存時(shí)(enable=false),一樣可以用mrc實(shí)例化之后的對象正常請求,支持promise
對比
類型 | 是否持久化 | 是否每次都請求 | 實(shí)時(shí)性 |
---|---|---|---|
快照緩存 | 是 | 是 | 高 |
短期緩存 | 否 | 否 | 低 |
配合骨架屏來使用效果更佳!??!
總結(jié)
緩存插件的使用可以有效的提升頁面打開速度,并且在頻繁的網(wǎng)絡(luò)請求中可以有效的節(jié)約服務(wù)器資源。具體的調(diào)用方式和源碼,請看 github ,最后求start
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Javascript實(shí)現(xiàn)簡單二級下拉菜單實(shí)例
這篇文章主要介紹Javascript實(shí)現(xiàn)二級下拉菜單的具體過程,需要的朋友可以參考下2014-06-06echarts拖拽滑塊dataZoom-slider自定義樣式簡單適配移動(dòng)端
在電腦端和移動(dòng)端的數(shù)據(jù)展示中,針對移動(dòng)端的特殊性,進(jìn)行了一系列優(yōu)化措施,這篇文章主要介紹了echarts拖拽滑塊dataZoom-slider自定義樣式簡單適配移動(dòng)端的相關(guān)資料,需要的朋友可以參考下2024-09-09JavaScript中對象property的讀取和寫入方法介紹
這篇文章主要介紹了JavaScript中對象property的讀取和寫入方法介紹,本文講解了原型繼承鏈中property的讀取、原型繼承鏈中property的寫入等內(nèi)容,需要的朋友可以參考下2014-12-12JavaScript實(shí)現(xiàn)文字展開和收起效果
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)文字展開和收起效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09擁有一個(gè)屬于自己的javascript表單驗(yàn)證插件
這篇文章主要幫助大家擁有一個(gè)屬于自己的javascript表單驗(yàn)證插件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-03-03JavaScript實(shí)現(xiàn)簡單的Markdown語法解析器
Markdown 是一種輕量級標(biāo)記語言, 它允許人們使用易讀易寫的純文本格式編寫文檔,然后轉(zhuǎn)換成有效的 XHTML(或者HTML)文檔。本文將利用JavaScript實(shí)現(xiàn)簡單的Markdown語法解析器,感興趣的可以了解一下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