keepalive

vue中使用keepAlive(缓存页面及记忆上次浏览位置)

柔情痞子 提交于 2019-12-05 04:22:00
转自博客: https://www.cnblogs.com/nokelong/p/8116631.html 使用keepAlive缓存页面,一可以减少服务器请求次数,二则可以在用户返回上一页后记忆到上次浏览位置 keep-alive的介绍如下: 1,把切换出去的组件保留在内存中,可以保留它的状态或避免重新渲染。 2、<keep-alive>是抽象组件,它自身不会渲染DOM元素,也不会出现在父组件链中。 3、当组件在 <keep-alive> 内被切换,它的 activated 和 deactivated 这两个生命周期钩子函数将会被对应执行。 注:在 2.2.0 及其更高版本中,activated 和 deactivated 将会在 <keep-alive> 树内的所有嵌套组件中触发。 基本用法:使用keep-alive直接包裹组件 使用keep-alive直接包裹组件 <keep-alive> <component :is="view"></component> </keep-alive> //注:<keep-alive> 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。 如果需要缓存整个项目,则如下设置(直接包裹根router-view即可): <keep-alive> <router-view> </router-view> </keep-alive>

一次TNS-12537, TNS-12560, TNS-00507的监听问题处理记录

依然范特西╮ 提交于 2019-12-04 17:33:03
早上接到应用说数据库连接不上,登陆服务器发现2节点登陆不上,1节点可用登陆 [oracle@xsdbd32 ~]$ sqlplus testconn/oracle@10.10.10.159:1521/ngjkdb1 SQL*Plus: Release 11.2.0.4.0 Production on Fri Oct 12 11:07:19 2018 Copyright (c) 1982, 2013, Oracle. All rights reserved. ERROR: ORA-12537: TNS:connection closed [oracle@xsdbd31 ~]$ sqlplus system/oracle@10.10.10.10:1521/ngjkdb1 SQL*Plus: Release 11.2.0.4.0 Production on Fri Oct 12 09:27:26 2018 Copyright (c) 1982, 2013, Oracle. All rights reserved. ERROR: ORA-01017: invalid username/password; logon denied 检查2遍的监听状态,看上去都正常 [oracle@xsdbd31 ~]$ lsnrctl status LSNRCTL for Linux: Version 11

vue内置组件 transition 和 keep-alive 使用

筅森魡賤 提交于 2019-12-03 23:15:46
1.transition name - string,用于自动生成 CSS 过渡类名。例如: name: 'fade' 将自动拓展为 .fade-enter , .fade-enter-active 等。默认类名为 "v" <transition> 元素作为单个元素/组件的过渡效果。 <transition> 只会把过渡效果应用到其包裹的内容上,而不会额外渲染 DOM 元素,也不会出现在检测过的组件层级中。 Vue只有在插入,更新或者移除DOM元素时才会应用过渡效果。 一般两类情况一个是利用CSS过渡或者动画,另一个是利用JavaScript钩子函数。 !-- 首先将要过渡的元素用transition包裹,并设置过渡的name,然后添加触发这个元素过渡的按钮(实际项目中不一定是按钮,任何能触发过渡组件的DOM操作的操作都可以) --> <div> <button @click="show=!show">show</button> <transition name="fade"> <p v-show="show">hello</p> </transition> </div> &.fade-enter-active, &.fade-leave-active transition: all 0.5s ease &.fade-enter, &.fade-leave-active

Is it possible to activate TCP keepalive on Apple iOS devices

匿名 (未验证) 提交于 2019-12-03 01:18:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: Apple device === Router === WiFi module Apple device(iPhone) is connecting to WiFi module port 2000 with TCP connection. I want to activate TCP keepalive packet sending on Apple device to find out when TCP connection to WiFi module is lost (module is switched off). My stream setup CFReadStreamRef readStream; CFWriteStreamRef writeStream; CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)CFBridgingRetain(moduleIPaddress), port2000, &readStream, &writeStream); outputStream = (NSOutputStream *)CFBridgingRelease(writeStream); inputStream =

keep-alive 组件级缓存

匿名 (未验证) 提交于 2019-12-03 00:43:02
前言 在Vue构建的单页面应用(SPA)中,路由模块一般使用 vue-router 。 vue-router 不保存被切换组件的状态, 它进行 push 或者 replace 时,旧组件会被销毁,而新组件会被新建,走一遍完整的生命周期。 但有时候,我们有一些需求,比如跳转到详情页面时,需要保持列表页的滚动条的深度,等返回的时候依然在这个位置,这样可以提高用户体验。 在Vue中,对于这种“页面缓存”的需求,我们可以使用keep-alive组件来解决这个需求。 keep-alive keep-alive是个抽象组件(或称为功能型组件),实际上不会被渲染在DOM树中。 它的作用是在内存中缓存组件(不让组件销毁),等到下次再渲染的时候,还会保持其中的所有状态,并且会触发activated钩子函数。 因为缓存的需要通常出现在页面切换时,所以常与router-view一起出现: <keep-alive> <router-view /> </keep-alive> 可以使用keep-alive组件的 include/exclude 属性。 include属性表示要缓存的组件名(即组件定义时的name属性), 接收的类型为 string 、 RegExp 或 string 数组; exclude属性有着相反的作用,匹配到的组件不会被缓存。 假如可能出现在同一router-view的N个页面中

心跳包机制

匿名 (未验证) 提交于 2019-12-03 00:36:02
https://blog.csdn.net/u011617097/article/details/50466233 之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小的包,或者只包含包头的一个空包。 在TCP的机制里面,本身是存在有心跳包的机制的,也就是TCP的选项:SO_KEEPALIVE。系统默认是设置的2小时的心跳频率。但是它检查不到机器断电、网线拔出、防火墙这些断线。而且逻辑层处理断线可能也不是那么好处理。一般,如果只是用于保活还是可以的。 心跳包一般来说都是在逻辑层发送空的echo包来实现的。下一个定时器,在一定时间间隔下发送一个空包给客户端,然后客户端反馈一个同样的空包回来,服务器如果在一定时间内收不到客户端发送过来的反馈包,那就只有认定说掉线了。 其实,要判定掉线,只需要send或者recv一下,如果结果为零,则为掉线。但是,在长连接下,有可能很长一段时间都没有数据往来。理论上说,这个连接是一直保持连接的,但是实际情况中,如果中间节点出现什么故障是难以知道的。更要命的是,有的节点(防火墙)会自动把一定时间之内没有数据交互的连接给断掉。在这个时候,就需要我们的心跳包了,用于维持长连接,保活。在获知了断线之后,服务器逻辑可能需要做一些事情

Socket心跳包机制

匿名 (未验证) 提交于 2019-12-03 00:34:01
心跳包的发送,通常有两种技术 方法1:应用层自己实现的心跳包 由应用程序自己发送心跳包来检测连接是否正常,大致的方法是:服务器在一个 Timer事件中定时 向客户端发送一个短小精悍的数据包,然后启动一个低级别的线程,在该线程中不断检测客户端的回应, 如果在一定时间内没有收到客户端的回应,即认为客户端已经掉线;同样,如果客户端在一定时间内没 有收到服务器的心跳包,则认为连接不可用。 方法2:TCP的KeepAlive保活机制 因为要考虑到一个服务器通常会连接多个客户端,因此由用户在应用层自己实现心跳包,代码较多 且稍显复杂,而利用TCP/IP协议层为内置的KeepAlive功能来实现心跳功能则简单得多。 不论是服务端还是客户端,一方开启KeepAlive功能后,就会自动在规定时间内向对方发送心跳包, 而另一方在收到心跳包后就会自动回复,以告诉对方我仍然在线。 因为开启KeepAlive功能需要消耗额外的宽带和流量,所以TCP协议层默认并不开启KeepAlive功 能,尽管这微不足道,但在按流量计费的环境下增加了费用,另一方面,KeepAlive设置不合理时可能会 因为短暂的网络波动而断开健康的TCP连接。并且,默认的KeepAlive超时需要7,200,000 MilliSeconds, 即2小时,探测次数为5次。对于很多服务端应用程序来说,2小时的空闲时间太长。因此

socket 莫名其妙的断开连接?

匿名 (未验证) 提交于 2019-12-03 00:27:02
之前有客户反馈,经常会收到客户端断开连接的提醒。影响聊天,希望能查下问题。开始我以为是用户网络波动,导致的连接断开,后来同事跟我反馈,网络正常的时候也会出现断开连接的现象,希望我查下服务器是否配置了什么,会话保持时长之类的参数。 这个问题在c++端比较容易重现,在web端偶现,移动端却没发生过。难道是移动端一直没用户使用,所以他们也不知道?额,不能这样想,不然容易被打。一定是有人用的,可能移动端有啥不为人知的厉害操作? 由于这个涉及的角色只有两个,server端和client端,至少目前来说,已经有两种client端都出现了问题,难道这俩端都写的有问题么?额,有一个是我写的,没弄清楚之前,不能怂。先从服务器端查起,检查相关配置,并没有发现有类似保持连接时间的配置,额。。。这就尴尬了。客户端也没有写超时自动断开的逻辑啊?几个人下午排查了半天,一直没发现问题到底是怎么回事儿。只能采用最笨的方法-抓包,然后请我们的好朋友wireshark分析下。同事在服务器端和客户端同时抓包,可是有时候就是这样,你越希望它重现,它反而越不出现。懊恼。。。 下班之前,CTO问查的如何了。大眼瞪小眼,不敢定结论。 他说他看下,第二天中午,cto拉我们去说这个问题,他找到原因了。 他给我们看异常断开连接前的包,发现断开连接之前会发两个包,每个包间隔是2s,上一条消息的间隔时间是20s,多次异常断开都是如此

lb的keepalive问题

匿名 (未验证) 提交于 2019-12-03 00:11:01
0. keepalive 大家都很清楚他的用意了,就是为了减少3次握手,设置一个timeout,比如说20s ,在20s内不请求,连接还是保持着,这时候请求过来,不需要重新经过tcp的三次握手,如果超过了就会断掉,重连的话就要3次握手。 一个正常的keepalive回复头有2个参数: timeout max HTTP / 1.1 200 OK Connection : Keep - Alive Content - Encoding : gzip Content - Type : text / html ; charset = utf - 8 Date : Thu , 11 Aug 2016 15 : 23 : 13 GMT Keep - Alive : timeout = 5 , max = 1000 Last - Modified : Mon , 25 Jul 2016 04 : 32 : 39 GMT Server : Apache ( body ) 这里举国内厂商为例, 阿里云,默认keepalive_timeout 15s ,无法关闭。 华为云,默认keepalive_timeout 300s,无法关闭。 那么很显然华为云的值有点过大了。 就是用户端会长时间停留在该lb上面,如果你只有1个lb,一个机房,那其实没啥影响,但是如果你有多机房部署,会造成用户到不了其他地方的问题

vue中keepAlive的使用

匿名 (未验证) 提交于 2019-12-02 23:52:01
在开发中经常有从列表跳到详情页,然后返回详情页的时候需要缓存列表页的状态(比如滚动位置信息),这个时候就需要保存状态,要缓存状态;vue里提供了keep-alive组件用来缓存状态。 可以用以下几种方案解决问题; 一、利用meta标签 1、首先在路由中的meta标签中记录keepAlive的属性为true path: '/classify', name: 'classify', component: () => import('@/views/classify/classify.vue'), meta: { title: '雷石淘券券', keepAlive: true } }, 2、在创建router实例的时候加上scrollBehavior方法 export default new Router({ mode: 'history', base: process.env.BASE_URL, routes, scrollBehavior (to, from, savedPosition) { if (savedPosition) { return savedPosition } else { return { x: 0, y: 0 } } } }) 3/在需要缓存的router-view组件上包裹keep-alive组件   <keep-alive> <router-view v