Лучший размер кеша для приложений iOS

В настоящее время я разрабатываю приложение, которое загружает множество изображений из Интернета и сохраняет их локально (я использую SDURLCache). Однако старые изображения снова удаляются с диска, поэтому мне было интересно, какой размер кеша лучше всего.
Преимущество большого кеша, очевидно, заключается в том, что сохраняется больше изображений, что приводит к лучшему UX. Недостатком является то, что изображения требуют много места, и у пользователя быстрее закончится место на диске. Размер, о котором я думаю, составляет 20 МБ. Хотя мне это кажется таким большим, поэтому я спрашиваю вас, каково ваше мнение.


person lbrndnr    schedule 27.12.2011    source источник


Ответы (2)


Учитывая, что самые маленькие iDevices имеют 8 ГБ памяти, я не думаю, что кэш 20 МБ слишком велик, особенно если он значительно повышает производительность приложения. Кроме того, имейте в виду огромное преимущество сетевого кэша для времени автономной работы, поскольку использование сети очень дорого обходится во времени работы от батареи.

Однако определить идеальный размер сложно без дополнительной информации. Как часто осуществляется доступ к одному и тому же изображению? Насколько велика каждая картинка (т.е. сколько картинок может вместить 20 МБ). Как часто нужно будет удалять изображения из кеша, чтобы добавить новые?

Если вы постоянно меняете изображения в кеше, это может отрицательно сказаться на сроке службы батареи из-за увеличения использования диска.

person Ben Baron    schedule 27.12.2011
comment
Ну, это не особо улучшает производительность. Это скорее улучшает использование памяти, поэтому приложение не падает, если загружено много изображений. К одному изображению обращаются примерно 2 раза. А в 10 Мб может поместиться 15 или 20 картинок. - person lbrndnr; 27.12.2011
comment
Ааа понятно, ну если чисто чтобы картинки не в памяти, то надо просто определить сколько картинок можно спокойно хранить в памяти сразу не выбивая ошибок памяти на старых устройствах(Х), потом узнать максимум количество изображений, которые вам когда-либо потребуется загрузить одновременно (Y), и средний размер каждого изображения (Z). Тогда ваш подходящий размер кеша будет просто (Y - X) * Z, плюс-минус несколько МБ. Если это слишком много, вам может потребоваться переосмыслить то, как работает ваше приложение. - person Ben Baron; 27.12.2011
comment
Также я не знаком с SDURLCache, поэтому, если это все или ничего (т. е. все изображения в памяти или все в кэше), то уравнение просто Y * Z. Хотя вы всегда можете написать собственное решение, соответствующее вашим потребностям. точно. - person Ben Baron; 27.12.2011
comment
Спасибо дружище, попробую. - person lbrndnr; 27.12.2011

Лучший способ выбрать подходящий размер кэша — это протестировать. Запустите приложение в разделе «Инструменты», чтобы измерить как производительность, так и использование батареи. Продолжайте увеличивать размер кеша, пока не перестанете различать производительность. Это самый большой размер, который вам понадобится, по крайней мере, в условиях испытаний. После того, как вы установили этот размер, уменьшайте его до тех пор, пока производительность не станет едва приемлемой для определения наименьшего приемлемого размера.

правильный размер находится где-то между этими двумя размерами, в зависимости от того, что вы считаете важным. Если вы не можете определить правильный размер, либо выберите размер, либо добавьте ползунок в настройки приложения, чтобы пользователь мог решить. (Я бы не стал делать его настраиваемым пользователем, если это возможно — пользователи не должны думать о таких вещах.)

person Caleb    schedule 27.12.2011