浏览器刷新为什么不会走销毁(beforeDestroy和destroyed)周期?
为什么我要写这篇博客呢,还有就是为什么我会问这个问题呢?
因为之前我遇到一个内存泄漏的问题,然后呢我在vue的beforeDestroy生命周期钩子函数里去释放一个实例的内存(3d模型),然后因为电脑很卡,我一遍又一遍的刷新页面,之后我去看那个任务管理器的时候发现谷歌的浏览器内存竟然占到了四五个g,我想着我去释放内存了,怎么内存还会增长?
浏览器刷新的时候会走这两个生命周期吗
答案是不会的。
这个时候就会有很多人问了,组件卸载的时候不是会走着两个周期吗?现在怎么不走了?我们先看看浏览器刷新的时候做了什么你就会明白了。
浏览器刷新是做了些什么
浏览器的刷新其实相当于重新访问这个ip地址,包括html和js,css文件都会重新获取(这里会涉及到文件缓存的问题,但与vue的生命周期没有关系)
浏览器不在乎你之前的页面是什么,相当于把你之前的页面给关了再打开 (直接拉闸再接电)
那又有很多人会问,那怎么办,总不能不去销毁那些东西啊
我们可以在页面加载的时候添加一个监听事件去监听浏览器刷新,关闭,这样就可以在浏览器刷新或者关闭的时候也能处理对应的业务逻辑
重温vue生命周期