对 keep-alive 的了解

keep-alive

  • <keep-alive> 是 Vue 内置的一个组件,可以使被包含的组件保留状态,或避免重新渲染。
  • <keep-alive> 生命周期钩子函数:activateddeactivated
    • 使用会将数据保留在内存中,如果要在每次进入页面的时候获取最新的数据,需要在 activated 阶段获取数据,承担原来 created 钩子中获取数据的任务。
    • 被包含在 中创建的组件,会多出两个生命周期的钩子: activateddeactivated
    • activated :在组件被激活时调用,在组件第一次渲染时也会被调用,之后每次 <keep-alive> 激活时被调用。
    • deactivated :在组件被停用时调用。
    • 注意:只有组件被 <keep-alive> 包裹时,这两个生命周期才会被调用,如果作为正常组件使用,是不会被调用,以及在 2.1.0 版本之后,使用 exclude 排除之后,就算被包裹在 <keep-alive> 中,这两个钩子依然不会被调用!另外在服务端渲染时此钩子也不会被调用的。
    • 什么时候获取数据?
      • 当引入 <keep-alive> 的时候,页面第一次进入,钩子的触发顺序 created => mounted => activated ,退出时触发deactivated。当再次进入(前进或者后退)时,只触发activated
  • <keep-alive> 的 props :
    1. include:定义缓存白名单,会缓存名单里面的组件
    2. exclude:定义缓存黑名单,被命中的组件不会被缓存
    3. max:定义缓存组件的上限
<keep-alive include='include_components' exclude='exclude_components'>
  <component>
    <!-- 该组件是否缓存取决于include和exclude属性 -->
  </component>
</keep-alive>

  • include - 字符串或正则表达式,只有名称匹配的组件会被缓存
  • exclude - 字符串或正则表达式,任何名称匹配的组件都不会被缓存
  • includeexclude 的属性允许组件有条件地缓存。二者都可以用“,”分隔字符串、正则表达式、数组。当使用正则或者是数组时,要记得使用v-bind` 。
<!-- 逗号分隔字符串,只有组件a与b被缓存。 -->
<keep-alive include="a,b">
  <component></component>
</keep-alive>
 
<!-- 正则表达式 (需要使用 v-bind,符合匹配规则的都会被缓存) -->
<keep-alive :include="/a|b/">
  <component></component>
</keep-alive>
 
<!-- Array (需要使用 v-bind,被包含的都会被缓存) -->
<keep-alive :include="['a', 'b']">
  <component></component>
</keep-alive>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TCP Keep-alive是一种机制,用于检测并恢复网络连接中存在的故障情况。当两个系统之间的网络连接长时间没有数据交换,TCP协议可能认为该连接已断开,并关闭连接以防资源浪费。然而,在某些情况下,如Web服务器、长连接应用等,连接应该保持开放状态而不仅仅是因为无活动就关闭。 ### TCP Keep-alive的工作原理 TCP Keep-alive通过发送空的数据包来检查连接的状态。发送间隔由`TIME_WAIT`定时器控制,默认设置下这个间隔大约为7200秒(两小时)。如果在这个时间周期内接收端没有接收到任何来自对端的数据包,那么接收端自动向源端发送一个ICMP消息,提示对方其连接已经超时。同时,接收端将更新其本地的超时计数器,准备在未来的时间周期再次尝试连通。 ### 实现TCP Keep-alive的方式 #### 服务器端: 对于服务器端,通常不需要显式配置TCP Keep-alive,因为在Linux和其他Unix系统上默认已经启用了此功能。但为了确保TCP Keep-alive能正常工作,可以调整相关的设置,例如增加`TIME_WAIT`超时时间或者更改接收数据的等待时间。 #### 客户端: 客户端需要更直接地与服务器协商开启TCP Keep-alive。这通常在建立连接的握手过程中进行,可以通过HTTP请求头或者其他特定于应用层的消息来实现。例如,在HTTP协议中,可以使用特定的HTTP版本或者自定义头部信息来触发Keep-alive机制。 ### 应用场景 TCP Keep-alive特别适用于需要长时间保持连接的应用,比如Web服务、文件传输协议(FTP)、远程桌面协议(RDP)以及其他任何依赖于持续连接的应用程序。它有助于提高系统的整体可用性和用户体验,避免因偶然的网络波动导致的意外断开连接。 ### 相关问题: 1. **TCP Keep-alive的配置方法是什么?** - 对于服务器,可以在运行时通过命令行参数或者配置文件来调整`TIME_WAIT`超时时间; - 对于客户端,需要根据使用的应用程序或协议文档来了解如何启用或配置TCP Keep-alive。 2. **TCP Keep-alive在哪些情况下可能导致问题?** - 过短的`TIME_WAIT`超时时间可能导致频繁的连接尝试; - 过长的超时时间则可能影响资源占用以及系统的响应速度。 3. **是否所有的网络环境下都适合使用TCP Keep-alive?** - 不一定。在高带宽、低延迟环境中,TCP Keep-alive可能是有益的;但在流量密集型网络或者对网络资源非常敏感的情况下,过多的Keep-alive操作可能带来额外的网络负担。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值