Android WebView缓存详解

  

<强>,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缓存详解