收藏
回答

引用的 utils.js 小程序是如何缓存的

框架类型 问题类型 终端类型 微信版本 基础库版本
小程序 Bug 客户端 6.7.2 2.2.3

有这样一个需求,在小程序内切换测试环境(即 ajax 链接)。


很容易理解,代码也很简单:

// utils.js
import config from './config.js';
function chooseEnviromentFirst(key) {
  const env = config.enviroment.now;
  if (env) {
    if (key) return env && env[key];
    return env;
  } else {
    wx.navigateTo({
      url: '/pages/chooseEnviroment/index',
    });
    return null;
  }

}

module.exports = { chooseEnviromentFirst };

// config.js
module.exports = {
  enviroment: {
    uat: {
      name: 'uat',
      webUrl: 'x',
      apiUrl: 'xx',
    },
    pre: {
      name: 'pre',
      webUrl: 'y',
      apiUrl: 'yy',
    },
    now: null,
  }
};
// post.js
import { chooseEnviromentFirst } from './util.js';
function xx(data, callback, errorFn) {
  if (!(baseUrl = chooseEnviromentFirst('apiUrl'))) return;
  _GET(baseUrl + '/xx', data, callback, 'ajax 请求', errorFn);
},
// /pages/chooseEnviroment/index.js
import config from '../../utils/config.js';
Page({
  to_uat() {
    config.enviroment.now = config.enviroment.uat;
    wx.navigateBack();
  }
})


也确实实现了,但也发现了一个问题,

那就是即使我删掉了小程序,config.enviroment.now 也还是被赋值

等于 config.js 并没有被清除掉,那么小程序的缓存机制到底是如何的呢,

或者,能否还有其他办法去完成此需求。

回答关注问题邀请回答
收藏

2 个回答

  • 晨
    2018-08-23

    你好,请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    2018-08-23
    有用
    回复 5
    • 永恒君
      永恒君
      2018-08-23

      wechatide://minicode/HMHhFSmz7O1e

      第一次弄,应该是这样吧,需用真机测哟。

      2018-08-23
      回复
    • 晨
      2018-08-23回复永恒君

      出现问题的机型和系统版本是?按什么流程操作?

      2018-08-23
      回复
    • 永恒君
      永恒君
      2018-08-23回复

      操作:开发版或体验版进入,选择测试环境,关闭小程序,删除小程序,重新进入后看能否重新选择测试环境。


      试了下只有较少安卓机删除小程序后没有清掉缓存(苹果机把授权也清掉了)

      比如:魅族 Pro6,

      2018-08-23
      回复
    • 晨
      2018-08-23回复永恒君

      微信版本是?如果不是最新版6.7.2的话更新试一下

      2018-08-23
      回复
    • 永恒君
      永恒君
      2018-08-23回复

      魅族Pro6  微信 6.7.2  组件库 2.2.3

      公司人少,还只测到我这台有问题,突然感觉问题不大了。

      2018-08-23
      回复
  • 是小白啊
    是小白啊
    2018-08-23

    你好,wx.removeStorage也删除不了缓存吗?


    2018-08-23
    有用
    回复 1
    • 永恒君
      永恒君
      2018-08-23

      恩啊,后来也把 to_uat 方法也改为了 wx.setStorageSync 模式,但依旧如此。


      场景如下,我选择完环境调用了 to_uat 方法,

      然后长按删除小程序,再进入时缓存还在,

      所以造成我无法二次切换环境。


      唔,无论是扫码开发版,还是体验版,都不会再次触发 onLaunch,

      所以想问下这个缓存会在何种时机下清除。

      当然理论上不可能是重新冷启动,那能否有其他生命周期能让我完成此需求所需的操作。

      2018-08-23
      回复
登录 后发表内容