Android WebView 缓存详解

发布时间 - 2026-01-11 01:54:24    点击率:

 Android WebView 缓存详解

一. 两种缓存类型:

页面缓存:加载一个网页时的html、JS、CSS等页面或者资源数据,这些缓存资源是由于浏览器 的行为而产生,开发者只能通过配置HTTP响应头影响浏览器的行为才能间接地影响到这些缓存数据。 而缓存的索引放在:/data/data//databases 对应的文件放在:/data/data/package_name/cache/webviewCacheChromunm下
数据缓存:分为AppCache和DOM Storage两种 我们开发者可以自行控制的就是这些缓存资源

AppCache:

       我们能够有选择的缓冲web浏览器中所有的东西,从页面、图片到脚本、css等等。 尤其在涉及到应用于网站的多个页面上的CSS和JavaScript文件的时候非常有用。其大小目前通常是5M。 在Android上需要手动开启(setAppCacheEnabled),并设置路径(setAppCachePath)和容量 (setAppCacheMaxSize),而android中使用ApplicationCache.db来保存AppCache数据!

DOM Storage:

存储一些简单的用key/value对即可解决的数据,根据作用范围的不同,有Session Storage和Local Storage两种,分别用于会话级别的存储(页面关闭即消失)和本地化存储(除非主动 删除,否则数据永远不会过期)在Android中可以手动开启DOM Storage(setDomStorageEnabled), 设置存储路径(setDatabasePath)Android中Webkit会为DOMStorage产生两个文件(my_path/localstorage/http_blog.csdn.net_0.localstorage和my_path/Databases.db)

二、WebView的5种缓存模式:

LOAD_NO_CACHE: 不使用缓存,只从网络获取数据
LOAD_CACHE_ONLY:  不使用网络,只读取本地缓存数据
LOAD_DEFAULT:  根据cache-control决定是否从网络上取数据
LOAD_CACHE_NORMAL: API level 17中已经废弃, 从API level 11开始作用同LOAD_DEFAULT模式
LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据

三、WebView缓存模式的设置:

  webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);//或其他模式 

 根据需求缓存策略可为:判断是否有网络  有:使用LOAD_DEFAULT/LOAD_NO_CACHE

  无:使用LOAD_CACHE_ELSE_NETWORK

四、删除缓存数据:

webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
 webView.clearCache(true);
 webView.clearHistory();
 webView.clearFormData();
/**
 * 清除WebView缓存 
 */
public void clearWebViewCache(){

  //清理Webview缓存数据库  
  try {
    deleteDatabase("webview.db");
    deleteDatabase("webviewCache.db");
  } catch (Exception e) {
    e.printStackTrace();
  }

  //WebView 缓存文件  
  File appCacheDir = new File(getFilesDir().getAbsolutePath()+APP_CACAHE_DIRNAME);
  Log.e(TAG, "appCacheDir path="+appCacheDir.getAbsolutePath());

  File webviewCacheDir = new File(getCacheDir().getAbsolutePath()+"/webviewCache");
  Log.e(TAG, "webviewCacheDir path="+webviewCacheDir.getAbsolutePath());

  //删除webview 缓存目录  
  if(webviewCacheDir.exists()){
    deleteFile(webviewCacheDir);
  }
  //删除webview 缓存 缓存目录  
  if(appCacheDir.exists()){
    deleteFile(appCacheDir);
  }
}  

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Android  # WebView  # 缓存  # 缓存类型  # Android WebView自定义长按选择实现收藏/分享选中文本功能  # Android实现webview实例代码  # Android 5.1 WebView内存泄漏问题及快速解决方法  # Android中WebView实现点击超链接启动QQ的方法  # Android如何让WebView中的HTML5页面实现视频全屏播放  # Android中解决WebView上下滑动监听问题  # Android中webview与JS交互、互调方法实例详解  # Android WebView或手机浏览器打开连接问题解决办法总结  # Android编程使用WebView实现与Javascript交互的方法【相互调用参数、传值】  # Android WebView的详解及实例  # 两种  # 放在  # 多个  # 希望能  # 或其他  # 应用于  # 影响到  # 涉及到  # 谢谢大家  # 永远不会  # 会为  # 可为  # 可以自行  # 网页时  # 判断是否  # 间接地  # 器中  # 加载  # 是由于  # JavaScript 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  如何快速生成可下载的建站源码工具?  昵图网官方站入口 昵图网素材图库官网入口  Laravel如何使用Blade模板引擎?(完整语法和示例)  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  详解Android中Activity的四大启动模式实验简述  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  如何登录建站主机?访问步骤全解析  如何基于云服务器快速搭建网站及云盘系统?  Python文件异常处理策略_健壮性说明【指导】  Laravel怎么导出Excel文件_Laravel Excel插件使用教程  Laravel如何实现本地化和多语言支持?(i18n教程)  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  郑州企业网站制作公司,郑州招聘网站有哪些?  JavaScript如何实现错误处理_try...catch如何捕获异常?  如何在万网利用已有域名快速建站?  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  黑客入侵网站服务器的常见手法有哪些?  香港服务器租用每月最低只需15元?  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  使用C语言编写圣诞表白程序  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  Android自定义控件实现温度旋转按钮效果  如何在云主机快速搭建网站站点?  如何快速打造个性化非模板自助建站?  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  如何有效防御Web建站篡改攻击?  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  如何获取上海专业网站定制建站电话?  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  LinuxCD持续部署教程_自动发布与回滚机制  个人网站制作流程图片大全,个人网站如何注销?  如何在云服务器上快速搭建个人网站?  java获取注册ip实例  Internet Explorer官网直接进入 IE浏览器在线体验版网址  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  如何在橙子建站上传落地页?操作指南详解  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  Android 常见的图片加载框架详细介绍  WordPress 子目录安装中正确处理脚本路径的完整指南  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  微信小程序 HTTPS报错整理常见问题及解决方案