wx.reqeust真机不支持cache control?不会将etag发送?
发布于 6 年前 作者 mqiu 9935 次浏览 来自 问答

最近有用户老是反应我们的小程序打开白屏,我们在排查首页加载速度的时候,做了个埋点。统计了一下请求数据,其中一个是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请修复。

2 回复

你好,开发工具使用 Chrome 内核来实现,所以支持 HTTP 的一些特性。真机目前没有支持,我们后续考虑支持此类标准。

借楼问一下,有时候wx.reqeust会地址解析失败,ios打开五六次会出现一次这种情况

回到顶部