儘管Apple的文檔indicating otherwise,NSURLCache
在iOS上根本不執行任何磁盤(閃存)緩存。您可以子類NSURLCache
來更改提取和存儲操作以使用磁盤的行爲(如SDURLCache
),但由於以下嚴重的緩存使用和實現限制, d預計:iOS上的NSURLConnection不會嘗試緩存大於50KB的對象
NSURLConnection
甚至不叫storeCachedResponse:forRequest:
的文件在50KB左右(> = 52428字節,是精確的)。這使得子類NSURLCache
對於我們的使用(200KB圖像)毫無意義,因爲它甚至不會進入緩存。因此,我們必須手動添加高於NSURLConnection
的級別的緩存。- 即使手動調用NSURLCache的內置
storeCachedResponse:forRequest:
,它只會將響應存儲在內存中,如果它小於大約180KB。我通過手動調用storeCachedResponse測試了這一點,並且看到currentMemoryUsage
之前/之後的數據長度在大約180KB以上沒有變化。所以我們也必須編寫自己的LRU內存緩存。
有沒有其他人注意到這些問題?還是有我失蹤的東西?
通知你,我在模擬器和在iPad 2
ASIHTTP不再支持 –