頁面緩存在頁面中長期會使用到,可以更快速的在頁面切換期間的資源獲取
主要是用keep-alive實現
在vue項目中,相關的寫法比較多,還有一些注意點需要仔細
第一種方式
在App.vue中
添加標簽
<keep-alive>
<router-view />
</keep-alive>
這會就是所有的頁面都會被緩存
這里做了兩個頁面的相互跳轉,分別寫了一個輸入框,在輸入內容后,跳轉時,輸入的內容因為緩存的原因會被保留


如果存在某些頁面需要緩存,那么可以通過keep-alive的屬性去處理
其中就是include和exclude
include:名稱匹配的組件才會被緩存,其中可以寫字符串或正則表達式
exclude:名稱匹配的組件不會被緩存,其中同樣是字符串或正則表達式
這里的名稱是指組件的名稱
<script>
export default {
name: 'HelloWorld'
}
</script>
<keep-alive include="HelloWorld">
<!-- 只有匹配到的HelloWorld才能被緩存--> <router-view /> </keep-alive>
第二種方式:
在路由中進行設置通過添加meta,route/index.js
export default new Router({
routes: [{
path: '/',
name: 'HelloWorld',
component: HelloWorld,
meta: {
keepAlive: true // 該路由會被緩存
}
},
{
path: '/ss',
name: 'ss',
component: Ss,
meta: {
keepAlive:false // 該路由不會被緩存,不需要緩存的時候該屬性可以不用寫
}
}]
})
這時候頁面還需要通過該屬性進行判斷是否緩存
在App.vue
<keep-alive>
<router-view v-if="$route.meta.keepAlive">
</router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive">
</router-view>
這樣寫有個優點就是,需要緩存不需要緩存的name可以隨便寫,不需要做什么規律性的去寫出一個合適的正則去匹配上,就會更加靈活些
常見的應用場景可以是,列表到詳情頁,從詳情頁返回到列表頁,如果說列表頁沒有做緩存,在單頁面下,會直接返回列表首頁(存在分頁的情況),就不能直接返回至之前離開的列表頁,所以這個地方在列表頁添加頁面緩存后,可以做到返回至之前離開的列表頁


沒有緩存的時候,返回列表:

有緩存的時候,返回列表

所以從某些程度上來講,即增加了頁面的響應速度,又怎么增加了用戶體驗,總體來說,還是比較實用的
