LoginSignup
41
41

More than 5 years have passed since last update.

iOS5からUIWebViewのキャッシュはディスク上にも保存される

Posted at

ググると「メモリ上にしか保存されない」という古い情報がよくヒットするのでメモしときます。

ソース

参考:NSURLCache Uses a Disk-cache as of iOS5

NSURLCache というのは、UIWebViewで使用しているキャッシュオブジェクトの事です。

参考(情報がちょいと古い):Cocoaの日々: [iOS] UIWebView のキャッシュ調査

利用するとアプリ容量がどんどん肥大化してく問題が起きたので、iPhoneアプリの中身がどうなっていくか調べている過程で上の記事を見つけました。

ほんとにディスク上に保存される?

実際試してみたところ、確かにUIWebViewを使用する度に、アプリの容量は増えます。
アプリを完全終了しても容量は減らないので、ディスクキャッシュしているのは間違いなさそうです。
具体的にどのファイルにキャッシュが保存されているかというと、~/Library/Caches/ にある、Cache.db です。

参考:(旧) Cocoaの日々: WebKit検証(32) - キャッシュの中身

ちなみに、デフォルトの上限は、メモリが4MBでディスクが20MBです。(NSURLCache.h参照)
まーこれくらいなら問題無さそう。
ディスクやメモリ上にあるキャッシュの容量/上限は、以下のメソッドで確認できますので気になる方はどうぞ。

[NSURLCache sharedURLCache] の

  • currentDiskUsage,
  • diskCapacity
  • currentMemoryUsage
  • memoryCapacity

ディスク上に保存しないようにするには?

ディスク上にキャッシュを保存しないようにする方法は、以下の2つがあります。

  1. NSURLRequestのcachePolicyに、NSURLRequestReloadIgnoringLocalCacheDataを指定する
  2. 利用できる保存領域に0を設定する [[NSURLCache sharedURLCache] setDiskCapacity:0];

UIWebViewでWebページを表示する場合は、1の方法だとWebページ上の細かいファイルの取得全てにcachePolicyを適用させる方法が面倒だったので、2の方法が楽でおすすめです。

以上です!!

41
41
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
41