uniapp的app的web-view如何清除缓存

在uniapp开发的app中,使用web-view组件加载网页后如何清除缓存?每次打开同一个URL都会显示旧内容,尝试过修改URL参数和重新编译应用都无效,是否有其他方法能强制清除web-view的缓存数据?

2 回复

在uniapp的web-view组件中,可以通过设置src属性为about:blank来清除缓存,然后重新加载原页面。或者使用plus.webview.clearCache()方法清除所有webview缓存。


在 UniApp 的 App 端,web-view 组件本身不提供直接清除缓存的方法,但可以通过以下方式实现缓存清理:

方法一:通过 URL 参数强制刷新(推荐)

web-viewsrc 链接后添加随机参数,避免加载缓存内容:

<web-view :src="url + '?t=' + timestamp"></web-view>
export default {
  data() {
    return {
      timestamp: Date.now()
    }
  },
  methods: {
    reloadWebview() {
      this.timestamp = Date.now() // 刷新时更新参数
    }
  }
}

方法二:使用原生能力清除 WebView 缓存

App.vue 或页面中调用原生方法(需区分平台):

Android(需使用条件编译)

// #ifdef APP-PLUS
const webview = this.$mp.page.$getAppWebview().children()[0]
webview.clearCache() // 清除缓存
// #endif

iOS(需使用条件编译)

// #ifdef APP-PLUS
const webview = this.$mp.page.$getAppWebview().children()[0]
webview.reload(true) // 参数为true时忽略缓存
// #endif

方法三:全局清除 WebView 缓存

在应用启动时执行:

// App.vue
onLaunch() {
  // #ifdef APP-PLUS
  plus.network.clearCookie()  // 清除Cookie
  plus.io.clearCache()        // 清除缓存文件
  // #endif
}

注意事项:

  1. 方法一最简单实用,适合常规需求
  2. 原生方法需要真机调试,部分API可能有平台差异
  3. 清除全局缓存会影响所有 WebView
  4. 建议在需要更新内容的特定时机调用

根据实际需求选择合适方案,通常推荐使用方法一。

回到顶部