广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >图文详解keep-alive如何清除缓存
  • 712
分享到

图文详解keep-alive如何清除缓存

2024-04-02 19:04:59 712人浏览 八月长安
摘要

目录开篇场景 使用v-for直接渲染 直接用自定义组件渲染keep-alve 强大的缓存存在的问题 总结开篇场景 我的项目是前后端没有分离的,技术栈是layui+Vue+jq,vu

开篇场景

我的项目是前后端没有分离的,技术栈是layui+Vue+jq,vue是我后面引入的,为了能够更好的组件化,将页面组件化,减少代码重复量,因为jq的页面需要经常获取dom 元素,导致页面非常的冗余,jq 的页面也不好做组件化,将页面的功能抽离封装,所以我引入了vue,最近需要是实现一个需求,就是多页面缓存,通过点击左边的菜单栏,右边展示页面,但是需要将点击过的页面都进行缓存,如下图

这是我做的一个简单的例子

使用v-for直接渲染

刚开始我的想法是设计一个数组,每次点击的时候将点击的组件push到一个数组,然后通过v-for用自定义组件进行遍历;

发现点击的时候会把内容都加进去,这个时候就需要一个index,来显示当前的高亮,而且需求是每次只显示一个页面,这个时候就要通过index去隐藏其他的页面。

v-for存在问题,删除的时候会因为数组改变重新渲染

此时可以看到实现了这个功能,但是每次点击都添加很多相同的元素 这个时候我们就可以做去重的操作

通过去重简单的实现了多页面的功能

因为我的功能是需要实现多页面缓存 就是要将这些页面都缓存起来,所以我用了keep-alive这个组件,但是数组改变的时候,页面会发生重新渲染

当我操作了B 页面 我把A 页面关闭也就是删除之后B 页面就重新渲染了 这就达不到我要的缓存的效果。所以并不能直接使用v-for 直接进行渲染

我后面想到自己实现个自定义指令,自己去判断是否重新渲染, 但是自定义指令根本没有this ,拿不到实例也就拿不到vnode 也就没法自己实现缓存。

后面我想自己写个组件用jsx 语法去渲染 自己判断是否缓存,还是重新创建实例,但是 我拿到缓存渲染不上去。
之后我就想到了keep-alive这个组件,不循环直接渲染当前高亮的那个页面

直接用自定义组件渲染

这时候 可以实现缓存的功能了,自己实现一个keep-alive还是很麻烦的,自带的这个keep-alive 还是很好用的,缓存还是很强的,

keep-alve 强大的缓存存在的问题

后面我发现了一个问题, 当我在页面做了操作,关闭了之后,在重新点开的时候,页面还是有数据,只能说keep-alive的缓存太厉害了,之后我就想怎么去清除这个缓存,官网有2个api,include跟exclude,include是包含那些组件的name 才会缓存,exclude刚好相反,是包含了那些就不缓存,但是我的页面组件是之前就构建好的,是个匿名的组件

我试过加name 并不能起到效果,我在度娘上查了下怎么清除缓存的,

参考文章:https://www.jb51.net/article/219189.htm

我就想到了 我能不能删除的时候也把它的缓存也清除了

找了好久还是让我找到了cache

这个是我简单写的例子是在 $children[0].$options.parent.cache,在我真实的项目是_vnode.chindren.componentInstance里面的第一个元素里面

最关键是这个带有keep-alive的 如果当你找到这个东西 你就能找到cache了,我之前试过写jsx,好像没找到cache这个东西,估计是没有keep-alive就没有cache,自己实现一个keep-alive还是很难的。

找到cache 可以看到它里面的key名字跟我们组件的名字有关系,可以用indexOf 去匹配然后删除cache

可以看到功能已经实现了,这样子就可以实现多页面缓存了。

不得不说 vue还是很强大的 keep-alive 还是很厉害的

总结

到此这篇关于keep-alive如何清除缓存的文章就介绍到这了,更多相关keep-alive清除缓存内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 图文详解keep-alive如何清除缓存

本文链接: https://www.lsjlt.com/news/132154.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 图文详解keep-alive如何清除缓存
    目录开篇场景 使用v-for直接渲染 直接用自定义组件渲染keep-alve 强大的缓存存在的问题 总结开篇场景 我的项目是前后端没有分离的,技术栈是layui+vue+jq,vu...
    99+
    2022-11-12
  • vue如何使用keep-alive后清除缓存
    小编给大家分享一下vue如何使用keep-alive后清除缓存,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是keepalive在平常开发中,有部分组件没有必...
    99+
    2023-06-20
  • 如何解决vue中keep-alive缓存问题
    这篇文章将为大家详细讲解有关如何解决vue中keep-alive缓存问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。vue开发的时候,我们经常会有这样的需求:开发一个详...
    99+
    2022-10-19
  • laravel视图缓存如何清除
    本篇内容主要讲解“laravel视图缓存如何清除”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“laravel视图缓存如何清除”吧!清除视图缓存,就是清除D:\phpStudy\WWW\BCCKi...
    99+
    2023-07-04
  • php如何清除文件缓存
    要清除PHP文件缓存,可以使用以下方法之一:1. 使用clearstatcache()函数来清除文件状态缓存,该函数会刷新PHP文件...
    99+
    2023-10-18
    php
  • laravel静态文件如何缓存清除
    本篇内容介绍了“laravel静态文件如何缓存清除”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!原理首先,让我们看看浏览器如何缓存静态文件。...
    99+
    2023-07-05
  • tomcat部署缓存文件如何清除
    要清除Tomcat部署的缓存文件,可以按照以下步骤进行操作:1. 停止Tomcat服务器。2. 打开Tomcat的安装目录,并进入`...
    99+
    2023-08-15
    tomcat
  • Metro应用缓存如何清理 图解Win8应用商店缓存文件清理
    Win8应用商店大大方便了用户安装软件,不过Win8应用商店的缓存文件也导致了我们系统C盘剩余空间越来越小,给系统稳定性带来不便,那么如何清理win8商店缓存文件呢?这个相信是不少使用Win8系统比较容易遇...
    99+
    2022-06-04
    缓存 商店 文件
  • windows8系统删除旧版应用/清理应用缓存详细图解
      删除旧版Win8应用   Win8应用安装的目录在系统盘,默认路径是 C:Program FilesWindowsApps,WindowsApps文件夹即使是管理员账户也没有权限访问 ,可以添加当前管理...
    99+
    2022-06-04
    缓存 旧版 详细
  • php项目无法清除redis缓存如何解决
    要清除 Redis 缓存,可以通过以下几种方法解决:1. 使用 Redis 的 FLUSHALL 命令清除所有缓存。这会删除 Red...
    99+
    2023-10-20
    php
  • win7如何清理图标缓存(重建、删除方法整理)
    不少正在用win7系统的用户也许会遇到一个桌面图标缓存问题,问题表现为“图标显示有问题”“桌面图标出现黑块”等,大体就是上述两个问题,下面整理与实践了几个方法供大家参考 [...
    99+
    2023-05-30
    win7 图标缓存 图标 整理 方法
  • windows清除dns缓存执行期间函数出了问题如何解决
    这篇“windows清除dns缓存执行期间函数出了问题如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“windows清...
    99+
    2023-07-01
  • Win7系统如何删除还原点图文详解
    大家在Windows 7系统之前的版本中使用系统还原功能很麻烦。但是Windows7就不同了。右击“计算机”点击“属性”。进入属性选项中的“系统保护&rdquo...
    99+
    2023-05-25
    Win7 还原 图文 还原点 系统
  • Vue如何解决每次发版都要强刷清除浏览器缓存问题
    目录每次发版都要强刷清除浏览器缓存问题原理vue 强制清除浏览器缓存(1)最基本的方法就是(2)在html文件中加入meta标签(3)需要后端陪着,进行nginx配置 (4)在脚本加...
    99+
    2022-11-13
    Vue每次发版 清除浏览器缓存 Vue清除缓存
  • 如何利用node实现静态文件缓存详解
    目录缓存缓存位置分类缓存设置headernode实现静态文件缓存强缓存思路代码实现效果展示协商缓存思路代码实现效果展示总结缓存 浏览器缓存(Brower Caching)是浏览器对...
    99+
    2022-11-12
  • 如何清除Windows 7通知区无效图标解决系统运行缓慢的问题
    大家都知道,Win7系统下,很多程序在前台运行时被关掉,会自动的余留在任务栏处。然而Win7任务栏有个特点,就是如果程序在任务栏处的托盘数量过多的话,将收缩进入被动查看列表中。这样一来有时候会造成很多用户在“...
    99+
    2023-05-25
    无效图标 系统 图标 Windows 7通知区 问题 解决
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作