时间:2021-05-18
因为我们有的页面是在onload中去请求数据回来再渲染视图,如果我们可以将请求数据这一步提前到小程序页面跳转前做,就可以早一点把数据请求回来,优化的效果取决于页面跳转所需的时间。
需要一种请求前置方法充分利用跳转的时间,预先请求接口数据,但是要尽量减少对旧项目的改造成本。因为现在我负责的小程序项目是用axios来请求接口数据,所以这里只举例axios中post的改造的思路。我这里是通过改写post方法,在请求的时候对需要预先请求的接口进行缓存,等第二次请求的时候返回第一次请求的promise,从而不用再发起新请求。
1、改造post方法
http文件
let instance = axios.create({ // 创建axios请求实例 // 省略部分代码});let { post } = instance; // 保存原本的post方法let cache = {}; // 请求缓存instance.post = function(...list) { let [url, data = {}] = list; if (cache[url]) { // 返回预请求的promise let pre = cache[url]; delete cache[url]; return pre; } if (data.pre) { //以pre作为是否是预请求 delete data.pre; cache[url] = post(...list) return cache[url]; } return post(...list); //普通的请求}2、使用
跳转前的页面,即上一个页面
// 省略部分代码 ...// 这是在下个页面要去请求接口的数据,提前在wx.navigateTo跳转前请求,并存储下来。$http.post('/act/activities/lucky:search', { activityId: 12 , pre: true })wx.nextTick(() => { //使用wx.nextTick是让上面的请求先发出再跳转 wx.navigateTo({ url: `${TYPE_TO_ROUTE_MAP[templateType]}?id=${activity.activityId}` });})// 省略部分代码 ...未使用预加载
使用预加载
两者红色框的宽度差,表示的是提前了多少时间去请求接口数据,大概在100ms左右。因为下面的静态资源地址来自于接口的数据,相当于减少了堵塞后面资源加载100ms左右。
导致这个优化的收益对整个项目来说确实有些鸡肋。
到此这篇关于微信小程序请求前置的文章就介绍到这了,更多相关小程序请求前置内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
微信小程序POST请求的实例详解在微信小程序里post请求和get情求,写法差不多,但是还是有一点点不同的,下面利用post请求做一个查询天气的微信小程序dem
微信小程序之网络请求简单封装实例详解在微信小程序中实现网络请求相对于Android来说感觉简单很多,我们只需要使用其提供的API就可以解决网络请求问题。普通HT
微信小程序合法域名校验出错详解及解决办法看下出现错误:微信小程序开发,遇到这个问题怎么办?产生原因是因为发起了wx.request请求而请求的域名没有在微信公众
微信小程序request请求后台接口php的实例详解后台php接口:http:///good/info',data:{},method:'GET',header
微信小程序同步请求授权的详解需求分析:1.在小程序首次打开的时候,我需要同时请求获取多个权限,由用户逐一授权。([‘scope.userInfo',‘scope