本情報は、Android 2.3までのもので、3.0以上は未確認です。
WebViewアプリを作るうえで、
パフォーマンス向上のため、WebViewキャッシュに関して調べた。
その時のメモ。
◆キャッシュDBの場所
AndroidのWebViewのキャッシュは、dataフォルダ内に収められている。
WebViewCache.dbにsqlite形式で保存される、
/data/data/【パッケージ名】/databases/webviewCache.db
>sqlite3 webviewCache.db
sqlite> .schema
CREATE TABLE cache (
_id INTEGER PRIMARY KEY
, url TEXT, filepath TEXT
, lastmodify TEXT
, etag TEXT
, expires INTEGER
, expiresstring TEXT
, mimetype TEXT
, encoding TEXT
, httpstatus INTEGER
, location TEXT
, contentlength INTEGER
, contentdisposition TEXT
, crossdomain TEXT
, UNIQUE (url) ON CONFLICT REPLACE
);
sqlite> select * from cache;
_id|url|filepath|lastmodify|etag|expires|expiresstring|mimetype|encoding|httpstatus|location|contentlength|contentdisposition|crossdomain
1|http://www.darkdrive.net/***/style.css|7abbf48b|Mon, 18 Feb 2013 16:43:21 GMT||1365353616876||text/css||200||10055||
2|http://www.darkdrive.net/***/arrow.gif|2b518e19|Sun, 16 Sep 2012 06:55:56 GMT||1368039066000||image/gif||200||70||
◆ファイルの実体
また、キャッシュファイルの実体の保存場所は、
webviewCacheディレクトリ下になる。
ファイル名は、さきほどのDBに保存された名前(filepath)になっている。
/data/data/【パッケージ名】/cache/webviewCache
※ディレクトリ
>adb shell
# cd /data/data/***/cache/webviewCache
# ls -l
-rw——- app_xxx app_xxx 10055 2013-02-18 16:43 7abbf48b
-rw——- app_xxx app_xxx
70 2012-09-16 06:55 2b518e19
感想として、
WebViewのキャッシュは端末本体に保存されるため、保存領域や容量上限などで取り扱いづらい。
キャッシュデータを直接読み込めると、
ディスクIOの回数が減るので、全体的なパフォーマンス向上になったりするのかなぁと。
Android 3.0以降の調査がほとんどできてないので、そちらも調べてみたい。
2013.5.9
NECO