uniapp webview 缓存问题如何解决
在uniapp中使用webview组件时遇到了缓存问题,页面内容更新后webview仍然显示旧内容。尝试过修改webview的src地址添加随机参数,但效果不稳定。请问有什么方法能彻底清除webview缓存或强制刷新内容?在iOS和Android平台下是否有不同的解决方案?
2 回复
清理缓存:调用uni.clearStorageSync()清空本地存储。
设置不缓存:在webview的src后加时间戳或随机参数,如?t=Date.now()。
服务端控制:设置HTTP响应头Cache-Control: no-cache。
在 UniApp 中,Webview 组件默认会缓存页面内容,可能导致页面更新不及时。以下是几种解决方法:
-
添加时间戳或随机参数
在 Webview 的 URL 后附加随机参数或时间戳,强制重新加载:let url = 'https://example.com?t=' + Date.now(); // 或使用随机数 // let url = 'https://example.com?r=' + Math.random(); -
禁用缓存(需服务端配合)
服务端设置响应头:Cache-Control: no-cache, no-store, must-revalidate Pragma: no-cache Expires: 0 -
清除 Webview 缓存(Android)
在 Android 平台可通过原生插件清除缓存,或使用以下代码(需在条件编译中判断平台):// #ifdef APP-PLUS let webview = this.$scope.$getAppWebview(); webview.clearCache(); // #endif -
使用 plus.io 清除缓存文件
手动删除缓存目录(谨慎使用,可能影响其他缓存):plus.io.resolveLocalFileSystemURL('_www', function(entry) { entry.removeRecursively(() => { console.log('缓存已清除'); }); }); -
动态创建 Webview
每次打开时创建新的 Webview 实例,避免复用:let wv = plus.webview.create(url, 'webview', {}); wv.show();
建议优先采用方法1,简单有效且不依赖平台。若问题持续,检查服务端缓存配置或结合方法3清除缓存。

