日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Vue中keep-alive 實(shí)現(xiàn)后退不刷新并保持滾動(dòng)位置

瀏覽:269日期:2023-01-30 17:43:06

什么是KeepAlive?

首先,我們要明確我們談的是TCP的 KeepAlive 還是HTTP的 Keep-Alive。TCP的KeepAlive和HTTP的Keep-Alive是完全不同的概念,不能混為一談。實(shí)際上HTTP的KeepAlive寫法是Keep-Alive,跟TCP的KeepAlive寫法上也有不同。

TCP的keepalive是側(cè)重在保持客戶端和服務(wù)端的連接,一方會(huì)不定期發(fā)送心跳包給另一方,當(dāng)一方端掉的時(shí)候,沒有斷掉的定時(shí)發(fā)送幾次心跳包,如果間隔發(fā)送幾次,對(duì)方都返回的是RST,而不是ACK,那么就釋放當(dāng)前鏈接。設(shè)想一下,如果tcp層沒有keepalive的機(jī)制,一旦一方斷開連接卻沒有發(fā)送FIN給另外一方的話,那么另外一方會(huì)一直以為這個(gè)連接還是存活的,幾天,幾月。那么這對(duì)服務(wù)器資源的影響是很大的。 HTTP的keep-alive一般我們都會(huì)帶上中間的橫杠,普通的http連接是客戶端連接上服務(wù)端,然后結(jié)束請(qǐng)求后,由客戶端或者服務(wù)端進(jìn)行http連接的關(guān)閉。下次再發(fā)送請(qǐng)求的時(shí)候,客戶端再發(fā)起一個(gè)連接,傳送數(shù)據(jù),關(guān)閉連接。這么個(gè)流程反復(fù)。但是一旦客戶端發(fā)送connection:keep-alive頭給服務(wù)端,且服務(wù)端也接受這個(gè)keep-alive的話,兩邊對(duì)上暗號(hào),這個(gè)連接就可以復(fù)用了,一個(gè)http處理完之后,另外一個(gè)http數(shù)據(jù)直接從這個(gè)連接走了。減少新建和斷開TCP連接的消耗。

二者的作用簡單來說:

HTTP協(xié)議的Keep-Alive意圖在于短時(shí)間內(nèi)連接復(fù)用,希望可以短時(shí)間內(nèi)在同一個(gè)連接上進(jìn)行多次請(qǐng)求/響應(yīng)。

TCP的KeepAlive機(jī)制意圖在于保活、心跳,檢測連接錯(cuò)誤。當(dāng)一個(gè)TCP連接兩端長時(shí)間沒有數(shù)據(jù)傳輸時(shí)(通常默認(rèn)配置是2小時(shí)),發(fā)送keepalive探針,探測鏈接是否存活。

總之,記住HTTP的Keep-Alive和TCP的KeepAlive不是一回事。

tcp的keepalive是在ESTABLISH狀態(tài)的時(shí)候,雙方如何檢測連接的可用行。而http的keep-alive說的是如何避免進(jìn)行重復(fù)的TCP三次握手和四次揮手的環(huán)節(jié)。

正文開始。

vue可以通過<keep-alive>元素包裹組件,實(shí)現(xiàn)緩存,下次使用時(shí)不需要重新創(chuàng)建該組件。但存在一個(gè)問題:keep-alive包裹的組件中有滾動(dòng)元素時(shí),keep-alive不會(huì)儲(chǔ)存滾動(dòng)位置。

實(shí)現(xiàn)后退不刷新主要依據(jù)keep-alive組件的activated和deactivated這兩個(gè)生命周期鉤子函數(shù)。

vue鉤子函數(shù)的執(zhí)行順序:

不使用keep-alive

beforeRouteEnter --> created --> mounted --> destroyed

使用keep-alive

初次進(jìn)入頁面,beforeRouteEnter --> created --> mounted --> activated --> deactivated

再次進(jìn)入緩存的頁面,只會(huì)觸發(fā)beforeRouteEnter -->activated --> deactivated。created和mounted不會(huì)再執(zhí)行。

其中,

activated在keep-alive組件激活時(shí)調(diào)用.

deactivated在keep-alive組件被停用時(shí)調(diào)用.

Demo 實(shí)現(xiàn)了后退不刷新,并且返回時(shí)滾動(dòng)到上次瀏覽的深度。

該demo中,包含三個(gè)鏈接導(dǎo)航。

home --> pageA --> pageB --> pageC

依次前進(jìn),每次前進(jìn)到一個(gè)新頁面都需要獲取數(shù)據(jù),而按下后退鍵后,

從pageC返回到pageB,pageB不再獲取新數(shù)據(jù),而是使用之前緩存的數(shù)據(jù)。

從pageB返回到pageA時(shí),pageA不再獲取新數(shù)據(jù),而是使用之前的數(shù)據(jù)。并且當(dāng)pageA存在滾動(dòng)條時(shí),返回時(shí)會(huì)滾動(dòng)到上次瀏覽高度。

所以,pageA和pageB需要緩存,pageC不需要緩存。

//router.jsimport Vue from ’vue’;import Router from ’vue-router’;Vue.use(Router);const router = new Router({ mode: ’hash’, routes: [ { path: ’/’, name: ’home’, component: () => import(’./views/Home.vue’), meta: { title: ’首頁’, keepAlive: false //此組件不需要被緩存 } }, { path: ’/pageA’, name: ’pageA’, component: () => import(’./views/pageA.vue’), meta: { title: ’pageA’, keepAlive: true, isBack: false } }, { path: ’/pageB’, name: ’pageB’, component: () => import(’./views/pageB.vue’), meta: { title: ’pageB’, keepAlive: true, isBack: false } }, { path: ’/pageC’, name: ’pageC’, component: () => import(’./views/pageC.vue’), meta: { title: ’pageC’, keepAlive: false } } ]});export default router;//pageA.vue<template> <div class='page-a'> <h1>pageA</h1> <div> <div v-for='item in items' @click='goPageB'> {{ item }} </div> </div> <h1 @click='goPageB'>go pageB</h1> </div></template><script> export default { name: ’PageA’, data() { return { msg: '我是PageA頁面', items: Array.from({length:50}, (v,k) => k), data: '', scrollTop: 0 }; }, beforeRouteEnter(to, from, next) { if(from.name == ’pageB’){ to.meta.isBack = true; } next(); }, mounted() { console.log(’mounted....’); // this指向組件的實(shí)例,$el指向當(dāng)前組件的DOM元素 const $el = this.$el; //滾動(dòng)事件 $el.addEventListener('scroll', () => { //記錄位置 this.scrollTop = $el.scrollTop; }); }, activated() { if(!this.$route.meta.isBack){ // 如果isBack是false,表明需要獲取新數(shù)據(jù),否則就不再請(qǐng)求,直接使用緩存的數(shù)據(jù) this.getData(); } else { //恢復(fù)滾動(dòng)條高度 if(this.scrollTop) { setTimeout(() => { this.$el.scrollTop = this.scrollTop; }, 100); } } // 恢復(fù)成默認(rèn)的false,避免isBack一直是true this.$route.meta.isBack = false; }, methods: { getData() { // getData方法,模擬從后臺(tái)請(qǐng)求數(shù)據(jù) this.data = '數(shù)據(jù)'; console.log(’get data’) }, goPageB(){ this.$router.push({ path: '/pageB' }); }, back() { this.$router.push({ path: '/' }); } }, }</script><style> .page-a { height: 100vh; overflow-y: auto; } .item { margin: 5px; padding: 10px; background: #ccc; }</style>

代碼請(qǐng)參考 鏈接 ;

后退不刷新還可以通過include實(shí)現(xiàn),可參考鏈接

總結(jié)

到此這篇關(guān)于Vue中keep-alive 實(shí)現(xiàn)后退不刷新并保持滾動(dòng)位置的文章就介紹到這了,更多相關(guān)keep-alive 后退不刷新持滾動(dòng)位置內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Vue
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产日韩一区二区三区在线| 国产精品sss在线观看av| 久久亚洲道色| 国产欧美丝祙| 日韩av网站在线观看| 日韩高清三区| 日韩动漫一区| 亚洲狼人精品一区二区三区| 日韩视频久久| 亚洲欧美日韩精品一区二区| 三级在线观看一区二区| 999在线观看精品免费不卡网站| 在线亚洲欧美| 亚洲影视一区| 国产探花一区在线观看| 免费一级欧美在线观看视频| 欧美国产亚洲精品| 精品国产乱码久久久| 日韩免费av| 99国产一区| 日韩国产欧美三级| 欧美交a欧美精品喷水| 亚洲深夜视频| 欧美特黄视频| 日韩国产高清在线| 欧美激情视频一区二区三区在线播放| 精品免费av| 日韩精品影视| 久久亚洲欧美| 国产欧美在线| 国产超碰精品| 视频一区二区三区中文字幕| 蜜桃av一区二区| 国产精品高清一区二区| 日韩av有码| 黄页网站一区| 婷婷综合福利| 国内揄拍国内精品久久| 久久一区二区三区电影| 日韩精品一卡二卡三卡四卡无卡| 日本国产亚洲| 一区二区三区四区日本视频| 91精品99| 一区二区三区网站| 九九九精品视频| av成人国产| 国产精品s色| 四虎884aa成人精品最新| 蜜臀va亚洲va欧美va天堂| 国产精品传媒麻豆hd| 成人羞羞视频在线看网址| 亚洲午夜久久| 国产精品毛片久久| 亚洲午夜免费| 92国产精品| 亚洲久久在线| 国产精品久久久久av电视剧| 91久久视频| 老色鬼精品视频在线观看播放| 久久五月天小说| 91成人福利| 91精品一区二区三区综合| 免播放器亚洲一区| 91综合视频| 日韩精品高清不卡| 一区二区三区四区在线看| 国产精品日韩精品在线播放| 国产精品88久久久久久| 国产午夜精品一区在线观看| 亚洲精品国产偷自在线观看| 国产精品xxxav免费视频| 欧美日韩国产在线一区| 狠狠久久伊人| 亚洲69av| 午夜国产欧美理论在线播放| 国产精品多人| 人人精品人人爱| 国产成人精选| 91欧美极品| 夜夜嗨av一区二区三区网站四季av| 久久午夜影院| 日本中文字幕一区二区视频| 蜜桃国内精品久久久久软件9| 美女性感视频久久| 日韩va欧美va亚洲va久久| 在线国产一区二区| 黄色精品视频| 奇米色欧美一区二区三区| 色88888久久久久久影院| 国产色99精品9i| 国产一区91| 亚洲天堂1区| 日韩国产欧美在线视频| 久久精品72免费观看| 亚洲v在线看| 亚洲我射av| 欧美91视频| 欧美日韩视频免费观看| 国产精品jk白丝蜜臀av小说| 免费不卡在线视频| 免费观看不卡av| 天堂√中文最新版在线| 精品视频黄色| 国产精品中文字幕制服诱惑| 亚洲免费中文| 激情婷婷综合| 亚洲性视频h| 国产精品18| 国产欧美视频在线| 亚洲精品欧美| 亚洲专区视频| 丝袜美腿高跟呻吟高潮一区| 国产一区日韩欧美| 超碰超碰人人人人精品| 精品国产欧美日韩一区二区三区| 国产精品久久久久久久久久齐齐| 日韩精品亚洲专区| 亚洲网址在线观看| 视频一区中文字幕国产| 亚洲中午字幕| 久久先锋影音| 在线看片一区| 亚洲在线国产日韩欧美| 亚洲一区激情| 欧美一区=区| 欧美在线综合| 亚洲综合五月| 日本免费新一区视频| 日韩1区2区日韩1区2区| 欧美日韩调教| 国产精品最新| 精品一区电影| 成人福利av| 日韩精品免费一区二区在线观看| 久久久水蜜桃av免费网站| 久久久精品五月天| 婷婷国产精品| 99久久亚洲精品蜜臀| 激情久久久久久久| 亚洲精品一区二区妖精| 蜜臀精品一区二区三区在线观看| 日韩精品一级中文字幕精品视频免费观看 | 久久午夜影院| 成人台湾亚洲精品一区二区| 在线看片国产福利你懂的| 国产欧美日韩精品一区二区免费| 国产日产高清欧美一区二区三区 | 一本一本久久| 999国产精品| 日本a级不卡| 免费一级欧美片在线观看网站 | 欧美亚洲精品在线| 欧美极品一区二区三区| 欧美aⅴ一区二区三区视频| 日本а中文在线天堂| jizzjizz中国精品麻豆| 99久久激情| 老司机精品久久| 日韩1区2区日韩1区2区| 国内不卡的一区二区三区中文字幕| 日韩欧美三级| 国产一区白浆| 国产欧美一区二区三区米奇| 久久中文字幕导航| se01亚洲视频| 一区二区三区国产在线| 国产精品白丝久久av网站| 麻豆成人在线观看| 在线日韩视频| 视频一区二区欧美| 欧美经典一区| 欧美特黄视频| 国产精品15p| 黑丝美女一区二区| 国产精区一区二区| 国产91久久精品一区二区| 日本午夜精品久久久| 日韩精品电影| 亚洲日本欧美| 麻豆视频在线看| 在线精品视频一区| 福利欧美精品在线| 欧美日韩四区| 久久99精品久久久野外观看| 久久精品国产www456c0m| 欧美一区精品| 五月婷婷六月综合| 国产亚洲一区| 蜜桃视频欧美| 国产精品sss在线观看av| 欧美另类专区| 福利在线免费视频| 日本亚洲最大的色成网站www| 日韩伦理一区| 欧美久久亚洲| 国产精品婷婷| 亚洲va中文在线播放免费| 综合干狼人综合首页| 久久一区二区中文字幕| 麻豆精品久久|