Android WebView的缓存方式分析

WebView的缓存可以分为(1)页面缓存和(2)数据缓存。

页面缓存是指当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中的缓存数据同样存在。需要杀死程序运行的当前进程再重新启动才可以。

时间: 2024-12-28 20:56:32

Android WebView的缓存方式分析的相关文章

手把手教你构建 Android WebView 的缓存机制 & 资源预加载方案

前言 由于H5具备 开发周期短.灵活性好 的特点,所以现在 Android App大多嵌入了 Android Webview 组件进行 Hybrid 开发 但我知道你一定在烦恼 Android Webview 的性能问题,特别突出的是:加载速度慢 & 消耗流量 今天,我将针对 Android Webview 的性能问题,提出一些有效解决方案. 目录 1. Android WebView 存在什么性能问题? Android WebView 里 H5 页面加载速度慢 耗费流量 下面会详细介绍. 1.

PHP网站redis缓存方式分析

作者:Wucl 时间:2014-02-05 章节内容:基础背景.分析内容.个人心得(这个人非常没品德,想到什么就写什么.). 1. 基础背景: 为了提高页面访问速度,降低访问数据库压力. 2. Redis缓存分析: 首先提出3个问题: 1)是否缓存整个网站中间件的数据? 2)如果缓存整个中间件的数据redis是否可以承压? 3)PHP缓存redis是否会对中间件的缓存方式存在影响? 现有两种预案: A方案:缓存时间较短,一般为120s以内, B方案:缓存时间较长,一般为84600s. A方案 开

Android WebView 实现缓存网页数据

WebView中存在着两种缓存:网页数据缓存(存储打开过的页面及资源),H5缓存(即AppCache). 将我们浏览过的网页url已经网页文件(css.图片.js等)保存到数据库表中 缓存模式(5种)LOAD_CACHE_ONLY:  不使用网络,只读取本地缓存数据LOAD_DEFAULT:  根据cache-control决定是否从网络上取数据.LOAD_CACHE_NORMAL: API level 17中已经废弃, 从API level 11开始作用同LOAD_DEFAULT模式LOAD_

Android 图片的缓存机制分析

LruCache 初始化 /** * @param maxSize for caches that do not override {@link #sizeOf}, this is * the maximum number of entries in the cache. For all other caches, * this is the maximum sum of the sizes of the entries in this cache. */ public LruCache(int

Android WebView与JS的交互方式 最全面汇总

前言 现在很多App里都内置了Web网页(Hyprid App),比如说很多电商平台,淘宝.京东.聚划算等等,如下图 上述功能是由Android的WebView实现的,其中涉及到Android客户端与Web网页交互的实现 今天我将全面介绍Android通过WebView与JS交互的全面方式 阅读本文前请先阅读:Android开发:最全面.最易懂的Webview详解 目录 1. 交互方式总结 Android与JS通过WebView互相调用方法,实际上是: Android去调用JS的代码 JS去调用

(二) Android Webview 深入 (上)

1 Android 利用 WebView 实现在 js 中调用 android 代码 在 java 或 android 中,接口占有很大比重,做程序员当然要对接口了解了,哈哈! android 和 js 看似牛马不相及,但是由于 WebView 的连接在 js 中就能够调用 android 写的代码实现 android 的功能! android 和 js 就像 java 和c/c++靠 jni 连接似的,二者也是靠接口连接.不 废话了,下面就以一个简单的案例讲述一下在 js 中调用 androi

ASimpleCache(ACache)源码分析(android轻量级开源缓存框架)

转载请注明出处:http://blog.csdn.net/zhoubin1992/article/details/46379055 ASimpleCache框架源码链接 https://github.com/yangfuhai/ASimpleCache 杨神作品,大家最熟悉他的应该是afinal框架吧 官方介绍 ASimpleCache 是一个为android制定的 轻量级的 开源缓存框架.轻量到只有一个java文件(由十几个类精简而来). 1.它可以缓存什么东西? 普通的字符串.JsonObj

Android艺术——Bitmap高效加载和缓存代码分析(2)

Bitmap的加载与缓存代码分析: 图片的压缩 比如有一张1024*768像素的图像要被载入内存,然而最终你要用到的图片大小其实只有128*96,那么我们会浪费很大一部分内存,这显然是没有必要的,下面是一个实例: public static int calculateInSampleSize(              BitmapFactory.Options options, int reqWidth, int reqHeight) {      // Raw height and widt

Android webView 缓存 Cache + HTML5离线功能 解决

时间 2013-06-11 21:06:14 CSDN博客 原文 http://blog.csdn.net/moubenmao/article/details/9076917 主题 Android HTML5 WebView的缓存可以分为页面缓存和数据缓存. 页面缓存是指加载一个网页时的html.JS.CSS等页面或者资源数据.这些缓存资源是由于浏览器的行为而产生,开发者只能通过配置HTTP响应头影响浏览器的行为才能间接地影响到这些缓存数据. 他们的索引存放在/data/data/package