2013-05-16 36 views
2

我有一個簡單的iOS應用程序,加載和鏈接列表,並將它們呈現在UIWebview中。該應用程序安裝後的大小約爲2MB。在點擊某些鏈接後,我發現文檔和數據的磁盤使用量跳到了10MB以上。幾天後,我注意到磁盤使用量持續增長。我的問題是,在iOS上管理磁盤存儲的最佳方式是什麼?UIWebview緩存到磁盤

這個應用程序的目標是非常小,不佔用資源,但我擔心它會繼續消耗越來越多的磁盤空間,我認爲是緩存的Web內容。我應該/有辦法設置緩存大小嗎?或者iOS只是爲我處理這個問題並最終刪除舊數據?

回答

2

不要過早優化!磁盤上的資源不會給RAM內存帶來壓力,所以不要擔心。如果系統正在爲您管理緩存,則無法猜測它會執行什麼操作。如果需要清理空間,它可能會清除空間。別擔心,快樂。

現在,說了,你確實得到了對NSURLRequest緩存策略的一些控制。查看NSURLRequest文檔以瞭解更多信息。

+0

感謝您的回覆。不過,我擔心iOS是否會正確處理磁盤緩存。我只是打印以下內容,我不明白爲什麼使用容量: '(lldb)po(int)[[NSURLCache sharedURLCache] currentDiskUsage] $ 0 = 23023616 [no Objective-C description available] (lldb)p (int)[[NSURLCache sharedURLCache] diskCapacity] (int)$ 1 = 20971520' – hodgesmr

+0

經過一些額外的測試後,看起來緩存在超過容量後被修剪。所以看起來很正常,要重新審視容量,並期望下次遇到問題時,操作系統將開始移除內容。這似乎是正確的嗎?如果是這樣,那麼我認爲你是對的,而且我不需要搗亂它。 – hodgesmr

+0

這是一個自動維護的緩存*。它填充和修剪,填充和修剪。別擔心,快樂。我想我已經說過了。 :) – matt

2

指定緩存大小:

int cacheSizeMemory = 8 * 1024 * 1024; // 8MB 
int cacheSizeDisk = 32 * 1024 * 1024; // 32MB 
NSURLCache* sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:cacheSizeMemory diskCapacity:cacheSizeDisk diskPath:@"nsurlcache"]; 
[NSURLCache setSharedURLCache:sharedCache]; 

刪除所有存儲的緩存URL的響應:

[[NSURLCache sharedURLCache] removeAllCachedResponses]; 

希望能對你有用!