在Vue應(yīng)用中,我們經(jīng)常需要在頁面中加載外部的網(wǎng)頁內(nèi)容。這個(gè)時(shí)候,我們可以使用HTML的iframe標(biāo)簽來實(shí)現(xiàn)。但是,如果不進(jìn)行處理,iframe會緩存之前的頁面內(nèi)容,而無法實(shí)時(shí)更新顯示內(nèi)容。下面介紹如何解決Vue中iframe緩存的問題。
當(dāng)使用Vue中的iframe組件時(shí),會發(fā)現(xiàn)每一次組件重新渲染時(shí),iframe都會自動緩存之前加載的頁面內(nèi)容,從而無法實(shí)時(shí)更新。但是,我們可以通過給iframe添加一個(gè)時(shí)間戳參數(shù),讓其每次加載時(shí)都是一個(gè)全新的url地址,從而強(qiáng)制它不緩存之前的內(nèi)容。
<template>
<div>
<iframe :src="`${url}?t=${timestamp}`"></iframe>
</div>
</template>
<script>
export default {
data() {
return {
url: 'http://www.example.com',
timestamp: Date.now()
}
},
methods: {
refresh() {
this.timestamp = Date.now()
}
}
}
</script>
如上代碼所示,我們使用了一個(gè)變量timestamp來記錄當(dāng)前的時(shí)間戳,并在iframe的src屬性中,以`t=${timestamp}`的形式添加為URL參數(shù)。這樣,在每次重新渲染組件時(shí),timestamp會更新為當(dāng)前時(shí)間戳,從而讓iframe每次都能加載全新的URL地址,不再緩存之前的內(nèi)容。
除了使用時(shí)間戳,還可以通過其他方式來強(qiáng)制讓iframe每次都是新的URL地址,比如添加隨機(jī)數(shù)參數(shù)、添加版本號等。總之,無論使用哪種方法,都需要保證每次重新渲染組件時(shí),iframe的URL地址都是全新的,從而實(shí)現(xiàn)不緩存的效果。