wx.reqeust真机不支持cache control?不会将etag发送?
最近有用户老是反应我们的小程序打开白屏,我们在排查首页加载速度的时候,做了个埋点。统计了一下请求数据,其中一个是http code,惊奇的发现没有304,全是200
奇怪的是,我们的后台已经对多数数据变化不大的接口调用做了etag和last modified支持,而且我们在开发者工具调试的时候也发现这个机制是正常的。
我们的代码
/** * ajax请求 * [@param](/user/param) {Object} [请求选项,见request API] */ ajax = (options = {}) => { if (!options.url) return ; options.url = `${config.ajaxURL}${options.url}`; let fn = options.success, error = options.fail; options.success = res => { if (res.statusCode == 200) { if (res.data.status == -11) { getApp().globalData.login(() => { wx.redirectTo({ url: $.history().fullPath, }); }); return ; } if (res.data.status == 0 && typeof fn === 'function' ) return fn(res.data); if ( typeof error === 'function' ) error(res.data); } else if ( typeof error === 'function' ) error(res.data); }; options.fail = res => { console.log(res); wx.showToast({ title: res.data, icon: 'loading' , }); if ( typeof error === 'function' ) error(res); } wx.request($.extend( true , options, { header: { "content-type" : "application/x-www-form-urlencoded" , sk: (wx.getStorageSync( 'user' ) || {}).session_key, }, })); }; |
我们就采用真机抓包发现,在真实的手机上,一点作用都没有,每次都是直接200,请求的头里面也没有带etag上去
文档里也没有对这块做说明,要知道这套机制能显著的增强用户前端的体验,麻烦官方给个说明。如果是bug请修复。