总结
根据路线图上的重点去进行有针对性的学习,在学习过程中,学会写笔记,做总结。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
这里分享一些前端学习笔记:
-
html5 / css3 学习笔记
-
JavaScript 学习笔记
-
Vue 学习笔记
-
手动退出小程序,再次进入;
-
将微信从后台退出再打开并重新进入小程序;
-
修改 Nginx 关于 Cache-Control 的配置;
-
用 debugx5.qq.com 手动清除安卓微信浏览器缓存;
-
iOS 利用微信自带清楚缓存功能。
无法及时刷新缓存会导致发布了最新的页面,而小程序里仍然是以前的页面,从而会带来许多问题,如前后端的数据不一致,新的特性无法及时起作用,修改的问题没有得到解决等等。这里需要说明一下:web-view 在过一段时间(时间不定,一天或者几小时,无明显规律)是可以进行缓存刷新的,而本 Chat 要解决的是及时刷新的问题。
解决问题
解决思路
浏览器访问资源是通过 URL 地址,如果内嵌 H5 的地址不发生变化,那么 web-view 访问资源会从缓存里取,而缓存里并没有最新的数据,这就导致了服务端的最新资源根本无法到达浏览器,这也就解释了为什么修改 Nginx 的 Cache-Control 配置也无法生效的原因。所以,要想彻底解决及时刷新,必须让 web-view 去访问新的地址。我们假定小程序访问的 URL 地址为:
https://www.yourdomain.com/101/#/index
其中 101 就是构建的一个版本号,每次递增,保证次次不同即可。
小程序获取最新版本号
在小程序中,我们利用 app 的 onShow 钩子函数 [1] 来完成最新的 URL 获取,同时还要保证只有获取了版本号之后才能加载其他的页面,因此这里要用到同步接口调用 [2]。请参考下面代码:
//这里加入同步请求到服务器获取最新路径
onShow: function (options) {
this.getFEVersion()
},
getFEVersion: function () {
//下面是利用Promise进行同步调用的写法
return new Promise(function (resolve, reject) {
wx.request({
//下面是本机调试的一个地址,上线时请改成自己服务端的地址
url: ‘http://192.168.0.168:8090/getFEVersion’,
data: {},
method: ‘POST’,
header: {
‘content-type’: ‘application/json’,
},
success: function (res) {
if (res.data.success) {
const app = getApp();
//res.data.version 是从服务端返回的最新fe的版本号,即上面的数字101
app.globalData.feUrl = ‘https://www.yourdomain.com/’ + res.data.version + ‘/#/index’
}
resolve();
},
fail: function (error) {
console.log(error);
reject();
}
})
});
},
Nginx 配置
Nginx 正则规则,~
表示区分大小写的正则匹配,\d
是数字的匹配的正则表达式,正好可以匹配 101 这样的数字表达式。
最后更多分享:前端字节跳动真题解析
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
更多分享:前端字节跳动真题解析
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
- [外链图片转存中…(img-rJxVEcBm-1715027044799)]