Android WebView缓存分析

来源:互联网 发布:数据采集员怎么样 编辑:程序博客网 时间:2024/06/05 03:32

WebView的缓存可以分为页面缓存和数据缓存。

页面缓存是指加载一个网页时的html、JS、CSS等页面或者资源数据。这些缓存资源是由于浏览器的行为而产生,开发者只能通过配置HTTP响应头影响浏览器的行为才能间接地影响到这些缓存数据。

他们的索引存放在/data/data/package_name/databases下。他们的文件存放在/data/data/package_name/cache/xxxwebviewcachexxx下。文件夹的名字在2.x和4.x上有所不同,但都文件夹名字中都包含webviewcache。



数据缓存分为两种:AppCache和DOM Storage(Web Storage)。他们是因为页面开发者的直接行为而产生。所有的缓存数据都由开发者直接完全地掌控。
AppCache使我们能够有选择的缓冲web浏览器中所有的东西,从页面、图片到脚本、css等等。尤其在涉及到应用于网站的多个页面上的CSS和JavaScript文件的时候非常有用。其大小目前通常是5M。
在Android上需要手动开启(setAppCacheEnabled),并设置路径(setAppCachePath)和容量(setAppCacheMaxSize)
Android中Webkit使用一个db文件来保存AppCache数据(my_path/ApplicationCache.db)
更详细的资料可以参考这里:http://www.itboat.net/thread-23674-1-1.html


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


另外,在Android中清除缓存时,如果需要清除Local Storage的话,仅仅删除Local Storage的本地存储文件是不够的,内存里面有缓存数据。如果再次进入页面,Local Storage中的缓存数据同样存在。需要杀死程序运行的当前进程再重新启动才可以。
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 铸铁下水管生锈怎么办 球墨铸铁管断了怎么办 胶水凝结了该怎么办? 鱼缸灯管坏了怎么办 塑钢窗密封胶条脱落怎么办 热熔三通漏水怎么办 吃东西呛到气管怎么办 气管套管煮黑怎么办 花洒连接管断了怎么办 花洒连接管坏了怎么办 软管接头生锈了怎么办 不锈钢杯子摔扁怎么办 兔子身上有胶怎么办 硅胶手机壳脏了怎么办 手机太滑了怎么办 油井套管断了怎么办 一二苯胍过敏怎么办 墨盒托架被卡怎么办 安华花洒调节不了方向怎么办 广联达计价软件打不开怎么办 夏天中午浇花了怎么办 喷壶不喷水了怎么办 防止油锅溢油怎么办 公寓消防喷头失灵怎么办 喷头管子裂了怎么办 露台有燃气管道怎么办 布防报警器响了怎么办 汽车报警器老响怎么办 铝框箱子扣不上怎么办 旅行箱 卡扣坏了怎么办 天然气火力不旺怎么办 内螺纹坏了怎么办 ppr管内丝松动了怎么办 点开微信链接被扣钱了怎么办 下水道往外渗水怎么办 小区下水道堵了怎么办 洗碗下水管堵塞怎么办 小区下水管漏水怎么办 墙内下水道漏水怎么办 暖气回水管漏水怎么办 厨房下水道管子漏水怎么办