<强>,Android WebView缓存详解强>
<强>一。两种缓存类型:强>
页面缓存:加载一个网页时的html、javascript、CSS等页面或者资源数据,这些缓存资源是由于浏览器的行为而产生,开发者只能通过配置HTTP响应头影响浏览器的行为才能间接地影响到这些缓存数据。而缓存的索引放在://数据库/数据/数据对应的文件放在:/数据/数据/package_name/缓存/webviewCacheChromunm下
数据缓存:分为AppCache和DOM存储两种我们开发者可以自行控制的就是这些缓存资源
<强> AppCache: 强>
,,,,,,我们能够有选择的缓冲网页浏览器中所有的东西,从页面,图片到脚本,css等等。尤其在涉及到应用于网站的多个页面上的css和JavaScript文件的时候非常有用。其大小目前通常是5 m。在Android上需要手动开启(setAppCacheEnabled),并设置路径(setAppCachePath)和容量(setAppCacheMaxSize),而Android中使ApplicationCache用。db来保存AppCache数据!
<强> DOM 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级别17中已经废弃,从API级别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(真正的); webView.clearHistory (); webView.clearFormData ();/* * *清除WebView缓存 */公共空间clearWebViewCache () {//清理Webview缓存数据库 尝试{ deleteDatabase (“webview.db”); deleteDatabase (“webviewCache.db”); }捕捉(异常e) { e.printStackTrace (); }//WebView缓存文件 .getAbsolutePath文件appCacheDir=新文件(getFilesDir () () + APP_CACAHE_DIRNAME); 日志。e(标签,“appCacheDir路径=" + appCacheDir.getAbsolutePath ()); .getAbsolutePath文件webviewCacheDir=新文件(getCacheDir () () + "/webviewCache "); 日志。e(标签,“webviewCacheDir路径=" + webviewCacheDir.getAbsolutePath ());//删除webview缓存目录 如果(webviewCacheDir.exists ()) { deleteFile (webviewCacheDir); }//删除webview缓存缓存目录 如果(appCacheDir.exists ()) { deleteFile (appCacheDir); } } >之前感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
Android WebView缓存详解