Android の WebViewのキャッシュについて

本情報は、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

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA

*