美文网首页
【Vue21】使用keep-alive优化网页性能

【Vue21】使用keep-alive优化网页性能

作者: 八宝君 | 来源:发表于2018-05-28 21:19 被阅读0次

当我们来回切换两个页面的时候,可以看到ajax请求也在重复请求,每一次路由发生切换时,ajax都在重新发送。
因为每一次路由重新切换到某个组件时,这个组件都会被重新渲染,所以它的mounted这个钩子就会被重新执行,所以ajax就会被重新获取。

组件ajax部分代码
获取一次不行吗?每一次进来都要重新获取,性能很低。
先打开App.vue
image.png
router-view显示的是路由所对应的内容,在它的外层套上一个keep-alive这是Vue自带的标签,它的意思是,路由的内容被加载过一次之后,就将它放入内存之中,下一次再进入这个路由,不需要重新渲染这个组件,不需要重新执行钩子函数,只需要从内存中拿出来就行了。

这个时候再去浏览器来回切换页面,发现没有重复进行ajax请求了。
但是又出现了一个新的问题。
如果我们切换城市,但是回到首页也不会重新请求了,那页面显示的内容和城市就无法对应了,本来的需求是,切换到北京,展现的是北京的产品,切换到深圳,展现的是深圳的产品。现在都不会重新加载ajax请求了,等于产品内容也不会改变了。
所以,在城市发生改变的时候,首页其实需要重新加载一次ajax
还是那个组件:

引入mapState
引入mapState
获取计算属性获取到对应的城市内容city
获取到对应的城市内容city
请求带上参数
然后在发ajax请求的时候,带上参数
定义lastCity
带上参数了

还没完。
当时用keep-alive时,组件会多出一个生命周期函数,叫做activated 在keep-alive 组件激活时调用。
当我们进入一个新的页面时,mountedactivated都会被执行,切换出去,重新进来的时候mounted没有再执行了,activated会再执行,因为用的keep-alive的缘故,直接拿的内存中的缓存,没有重新渲染dom了。借助这个生命周期函数,可以实现想要的功能。
定义一个lastCity用来存放上一次的城市。

mounted
当页面刚进来被加载时,将当前city赋值给lastCity(第一次进来时)
activated
keep-alive组件重新激活的时候,也就是切换回当前组件时。执行了activated这个钩子函数,在这个钩子函数中,做个判断,判断当前的城市和lastCity中的城市是否一样,如果一样不做任何操作,不一样的话,将当前城市赋值给lastCity(更新操作),然后执行一次ajax请求(this.getHomeInfo())

相关文章

  • 【Vue21】使用keep-alive优化网页性能

    当我们来回切换两个页面的时候,可以看到ajax请求也在重复请求,每一次路由发生切换时,ajax都在重新发送。因为每...

  • 8-11 使用 keep-alive优化网页性能

    keep-alive标签 keep-alive会把包裹的页面缓存起来,可以避免多次请求重复数据。activated...

  • 第十八天

    1.你了解哪些Vue性能优化方法? 路由懒加载(通过import方法来实现)keep-alive缓存页面使用v-s...

  • 网页渲染与网页性能

    参考原文:网页性能管理详解 网页优化 如果想知道怎么优化网页,就必须了解网页的生成流程,知道在那些点上可以优化网页...

  • 前端性能优化

    js性能小贴士——优化循环 前端网页与js性能优化 我总结的js性能优化的小知识 提高 web 应用性能之 Jav...

  • 前端性能 优化 大全

    js性能小贴士——优化循环 前端网页与js性能优化 我总结的js性能优化的小知识 提高 web 应用性能之 Jav...

  • 网页性能优化

    页面级优化 减少HTTP请求数 从设计层实现页面简化:比如百度首页,很简介,所需要的资源就相对较少 合理设置HTT...

  • 网页性能优化

    待补充

  • 网页性能优化

    概念:重排(reflow):重新生成布局重绘(repaint):重新绘制"重绘"不一定需要"重排",比如改变某个网...

  • 网页性能优化

    主要内容如下 代码层面的优化 缓存 http 减小打包体积 代码层面的优化 csswill-change告诉浏览器...

网友评论

      本文标题:【Vue21】使用keep-alive优化网页性能

      本文链接:https://www.haomeiwen.com/subject/gwdnjftx.html