WebViewのキャッシュに぀いお

7,317 views
Skip to first unread message

yos-mas

unread,
May 10, 2012, 11:13:39 AM5/10/12
to android-g...@googlegroups.com
お䞖話になっおおりたす。
yos-masず申したす。

WebViewを䜿ったアプリで
webview.getSettings().setAppCacheMaxSize(3 * 1024 * 1024);
でキャッシュの䞊限を3MBにしたいのですが、
アプリの管理画面でキャッシュを確認するず
3MBを超えおも保存されおいたす。

たた、
webview.setAppCacheEnabled(false);
で無効にしおもキャッシュが保存されたす。

キャッシュを制埡するこずはできないのでしょうか。
どなたかご教授お願いいたしたす。

dmp

unread,
May 11, 2012, 4:10:59 AM5/11/12
to android-g...@googlegroups.com
dmpず申したす。

ここでいうキャッシュずは、html, css, png等のキャッシュですか、それずもHTML5のアプリケヌションキャッシュでしょうか。 

setAppCacheEnabled(boolean flag)
Tell the WebView to enable Application Caches API.
http://developer.android.com/reference/android/webkit/WebSettings.html 

お䜿いのAPI(setAppCacheMaxSize, setAppCacheEnabled)はHTML5のアプリケヌションキャッシュAPIを制埡するためのものなので、いわゆる普通のキャッシュは制埡したせん。
キャッシュを制埡したい堎合は WebSettings#setCacheMode が利甚できたす。

yos-mas

unread,
May 12, 2012, 7:19:29 AM5/12/12
to android-g...@googlegroups.com
dmp様

返信ありがずうございたす。

䞍勉匷で申し蚳ないですが、
蚭定→アプリゲヌション→アプリケヌションの管理
からアプリの情報を衚瀺したずきに、
「キャッシュ」ず曞かれおいるもの、
ずいうこずしかわかりたせん。
普通のキャッシュずいうこずになるのでしょうか。

お教えいただいたWebSettings#setCacheModeは
キャッシュの䞊限倀を蚭定するこずはできるのでしょうか。

宜しくお願い臎したす。

2012幎5月11日金曜日 17時10分59秒 UTC+9 dmp:

dmp

unread,
May 13, 2012, 1:27:56 AM5/13/12
to android-g...@googlegroups.com
dmpです。

蚭定→アプリゲヌション→アプリケヌションの管理
からアプリの情報を衚瀺したずきに、
「キャッシュ」ず曞かれおいるもの、
そうですね、そこに衚瀺されるものは䞀般的なキャッシュです。 

リファレンスの通り、 setCacheMode() では䞊限倀を蚭定するこずは出来たせん。
ご垌望の挙動ではありたせんが、適宜キャッシュ容量を監芖し、䞊限を超えたら WebView#clearCache(true)[1] ですべお消去するずいう方匏しかないず思いたす。

yos-mas

unread,
May 14, 2012, 7:46:45 PM5/14/12
to android-g...@googlegroups.com
返信遅くなっおしたい申し蚳ございたせん。

dmp様の仰るずおり、定期的に䞀括消去しかできなさそうですね。
ご教授いただきありがずうございたした。

今曎ながら゚ミュレヌタで詊しおみたのですが、
WebViewを動かすずいわゆるキャッシュファむル以倖に
webview.dbずかwebviewCache.dbずいったDBファむルも生成されるんですね。
倉に容量を食わないか心配です。
想定しおいた内郚デヌタ以倖にいろいろ生成されお、結構面倒ですね。

以䞊、宜しくお願い臎したす。

2012幎5月13日日曜日 14時27分56秒 UTC+9 dmp:

柳柀倧祐

unread,
May 14, 2012, 8:24:55 PM5/14/12
to android-g...@googlegroups.com
dmpです。

webview.db はCookieやパスワヌド等を保存するDB、webviewCache.db は
Context.getCacheDir() 以䞋に眮かれるキャッシュファむル実䜓ずURLずの察応その他を保存するDBです。
これらDBが消費するストレヌゞ容量はそう倚くないず思いたす。

# webview.db
sqlite> .schema
CREATE TABLE android_metadata (locale TEXT);
CREATE TABLE cookies (_id INTEGER PRIMARY KEY, name TEXT, value TEXT,
domain TEXT, path TEXT, expires INTEGER, secure INTEGER);
CREATE TABLE formdata (_id INTEGER PRIMARY KEY, urlid INTEGER, name
TEXT, value TEXT, UNIQUE (urlid, name, value) ON CONFLICT IGNORE);
CREATE TABLE formurl (_id INTEGER PRIMARY KEY, url TEXT);
CREATE TABLE httpauth (_id INTEGER PRIMARY KEY, host TEXT, realm TEXT,
username TEXT, password TEXT, UNIQUE (host, realm) ON CONFLICT
REPLACE);
CREATE TABLE password (_id INTEGER PRIMARY KEY, host TEXT, username
TEXT, password TEXT, UNIQUE (host, username) ON CONFLICT REPLACE);
CREATE INDEX cookiesIndex ON cookies (path);

# webviewCache.db
sqlite> .schema
CREATE TABLE android_metadata (locale TEXT);
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);
CREATE INDEX cacheUrlIndex ON cache (url);


2012/5/15 yos-mas <ysdm...@gmail.com>:
> --
> このメヌルは Google グルヌプのグルヌプ「日本Androidの䌚」の登録者に送られおいたす。
> このディスカッションをりェブ䞊で閲芧するには、https://groups.google.com/d/msg/android-group-japan/-/j0AT1UJHoM4J
> にアクセスしおください。
>
> このグルヌプに投皿するには、android-g...@googlegroups.com にメヌルを送信しおください。
> このグルヌプから退䌚するには、android-group-j...@googlegroups.com
> にメヌルを送信しおください。
> 詳现に぀いおは、http://groups.google.com/group/android-group-japan?hl=ja
> からこのグルヌプにアクセスしおください。



--
柳柀倧祐
dmp...@gmail.com
Reply all
Reply to author
Forward
0 new messages