Hybrid页面清除WebView缓存后还是加载旧内容怎么办?
在Hybrid项目里用Android WebView开发,修改了接口后发现页面还是显示旧数据。已经调用了clearCache()和清除Cookie的方法,但问题依旧存在。
具体场景是用户登录页,前端改了表单结构后,部分用户仍看到旧布局。尝试过以下方案:
在Activity里强制刷新:
webView.clearCache(true);
webView.clearHistory();
CookieManager.getInstance().removeAllCookies(null);
同时在JS里加了,但iOS那边WKWebView没问题,只有Android设备存在缓存残留。搞不清楚是内存缓存没清还是磁盘缓存路径不对,有没有更彻底的清除方法?
建议你在调用clearCache之后,再手动删除系统默认的缓存目录。可以用以下代码:
另外前端也要配合,确保静态资源加了版本号,比如在入口JS/CSS加上时间戳参数。后端处理接口的时候也建议加Cache-Control头,避免WebView误读缓存。
这个组合拳打完基本就能解决残留缓存的问题了。
getCacheDir().delete();getCacheDir().mkdirs();
或者更暴力点,在清除缓存时直接递归删除整个缓存目录: