Cache директоријум апликације — шта је, намена и како очистити у мобилном развоју

Аутор: IT Sectr Објављено: 2026-03-13 Време читања: 10 мин

Кеш директоријум апликације је привремено складиште података који могу бити поново креирани при следећем коришћењу. Према Android Developers, 2026, систем може обрисати датотеке из овог директоријума када нема довољно меморије без упозорења, стога апликација не треба да се ослања на очување кеша за критично важне податке. Правилно коришћење кеш директоријума смањује заузети простор и убрзава учитавање садржаја.

Главно

  • Cache Directory — привремено складиште датотека које се могу поново створити, није намењено за сталне податке
  • Android пружа context.cacheDir и context.externalCacheDir за чување кеша у интерној и екстерној меморији
  • iOS користи NSCachesDirectory, који је аутоматски искључен из иЦлоуд резервне копије
  • Систем може обрисати кеш у било ком тренутку — критично важне податке чувајте у Internal Storage
  • Ручно чишћење кеша кроз подешавања апликације повећава поверење корисника и побољшава рецензије

Шта је кеш директоријум апликације?

Кеш директоријум је посебан директоријум у интерној (или екстерној) меморији апликације, намењен за привремене датотеке. Главна разлика у односу на Internal Storage: систем има право да обрише датотеке из кеша без обавештења ако уређају недостаје слободног простора. Стога апликација никада не треба да чува у кешу једину копију важних корисничких података. Кеш је оптималан за преузете слике, одговоре сервера, прекомпајлиране ресурсе и све друге податке који се могу удаљено обновити или поново програмски креирати.

На Android се кеш директоријум налази на путањи /data/data/<пакет>/cache/ и доступан је преко context.cacheDir. Величина кеша није експлицитно ограничена, али Google Play препоручује да не прелази 100 MB, јер апликације са великим кешом добијају негативне рецензије корисника. На iOS кеш директоријум се налази унутар Sandbox контејнера на путањи Library/Caches/ и доступан је преко NSCachesDirectory. iOS може обрисати датотеке из Caches приликом враћања уређаја из резервне копије или при критичном недостатку простора — кориснике треба упозорити о томе у документацији апликације.

Разумевање тога који подаци могу безбедно да се сместе у кеш, а који треба да се чувају у Internal Storage или Documents, кључна је вештина програмера. Неправилно коришћење кеша доводи до два супротна проблема: или апликација заузима превише простора (ако програмер чува у кешу оно што би требало да буде у Documents) или корисник губи податке (ако програмер чува у кешу оно што би требало да буде трајно сачувано). Придржавајте се једноставног правила: ако подаци могу бити обновљени — кеш, ако обнављање није могуће — Internal Storage или Documents.

Намена и врсте података који се кеширају

Различите врсте података имају различиту брзину поновног стварања и захтеве за обимом. Разумевање ових карактеристика помаже програмеру да правилно одабере које датотеке сместити у кеш, а које у трајно складиште.

Кеш слика и медијских датотека

Најчешћа врста података који се кеширају су слике преузете из мреже. Библиотеке Glide, Picasso и Coil аутоматски чувају преузете слике у кеш директоријуму апликације. Типична величина кеша слика у друштвеним апликацијама износи од 50 до 200 MB. Величина кеша зависи од резолуције екрана уређаја и количине прегледаног садржаја. Glide користи двослојно кеширање: прво проверава L1 кеш у RAM меморији (LRU алгоритам), затим L2 кеш на диску. Ово обезбеђује брзо учитавање поново прегледаних слика без поновног захтева преко мреже. Подешавање максималне величине дисковног кеша преко DiskCacheStrategy омогућава контролу заузетог простора: након прекорачења границе, библиотека аутоматски брише најређе коришћене датотеке.

kotlin
val cacheDir = File(context.cacheDir, "image_cache")
val maxSize = 50 * 1024 * 1024 // 50 MB

val cache = DiskLruCache.open(cacheDir, 1, 1, maxSize)
cache.edit("key")?.let { editor ->
    editor.newOutputStream(0).use { stream ->
        // упис података у кеш
    }
}

Кеш мрежних захтева

Одговори API захтева могу се кеширати за офлајн приступ и смањење оптерећења сервера. OkHttp пружа уграђену подршку за кеширање преко класе Cache. Заглавља одговора Cache-Control и ETag управљају политиком кеширања: сервер одређује колико дуго се одговор сматра актуелним. Уз правилно подешавање, кеш мрежних захтева може смањити време учитавања података за 60–80% при поновним посетама и обезбедити основну функционалност апликације без интернет везе. Величина кеша мрежних захтева ретко прелази 10–20 MB, али уз активно коришћење апликације може достићи 50 MB. Подесите максималну величину кеша преко конструктора OkHttpClient.Builder и проверавајте актуелност кешираних података при сваком покретању апликације.

Кеш база података и прекомпајлираних података

SQLite базе података могу генерисати привремене датотеке током рада: WAL датотеке (Write-Ahead Log), дневнике враћања и индексне странице. Ове датотеке се чувају поред главне базе података, али за привремене базе података (нпр. претрага пуног текста или аналитика) може се одредити смештај у кеш директоријум. Прекомпајлирани shader програми OpenGL и Vulkan се такође кеширају у овом директоријуму, што убрзава прво учитавање графичких сцена. На iOS директоријум NSCachesDirectory препоручује се за чување прекомпајлираних Core Data података и привремених датотека за обраду слика.

Како функционише чишћење кеша на Android и iOS

Чишћење кеша може се одвијати аутоматски (од стране система) или ручно (од стране корисника или апликације). Разумевање понашања система у различитим сценаријима неопходно је за спречавање губитка података.

Аутоматско чишћење од стране система

На Android систем покреће процес чишћења кеша када количина слободног простора на партицији /data падне испод критичног прага (обично 500 MB). Процес cacheflush анализира величину кеша свих инсталираних апликација и брише најређе коришћене датотеке, почевши од најстаријих. Корисник такође може ручно обрисати кеш свих апликација кроз подешавања система: „Подешавања → Складиште → Кеш → Обриши кеш". На iOS аутоматско чишћење Caches се дешава приликом враћања уређаја из резервне копије — iOS не враћа садржај Library/Caches/. Поред тога, iOS може селективно брисати датотеке из Caches када понестане слободног простора на уређају, користећи механизам purgeable storage за изоловане податке.

swift
let fm = FileManager.default
let cachesURL = fm.urls(
    for: .cachesDirectory,
    in: .userDomainMask
).first!

let contents = try fm.contentsOfDirectory(
    at: cachesURL,
    includingPropertiesForKeys: nil
)
for fileURL in contents {
    try fm.removeItem(at: fileURL)
}

Програмско чишћење кеша од стране апликације

Програмер може имплементирати програмско чишћење кеша на захтев корисника или по распореду. На Android за чишћење сопственог кеша довољно је обрисати све датотеке у context.cacheDir и context.externalCacheDir. На iOS можете обрисати садржај Library/Caches/, али не бришите сам директоријум — само његов садржај. Препоручује се приказивање кориснику тренутне величине кеша у подешавањима апликације и дугмета „Обриши кеш" са потврдом. Према Google Play Console, апликације са дугметом за чишћење кеша добијају 22% мање жалби на недостатак простора у поређењу са апликацијама без такве функције. Чишћење кеша треба да буде безбедно: апликација мора правилно да обради ситуацију када су кеширане датотеке обрисане и транспарентно их поново учита при следећем приступу.

Разлике између cacheDir на Android и iOS

Упркос истој намени, имплементација кеш директоријума на Android и iOS има значајне разлике. Програмер их мора узети у обзир за исправан рад апликације на обе платформе.

КарактеристикаAndroidiOS
Подразумевана путања/data/data/<пакет>/cache/Library/Caches/
API приступаcontext.cacheDirNSCachesDirectory
Екстерни кешcontext.externalCacheDirНе постоји
Резервна копијаНе архивира сеНе архивира се
Системско чишћењеПри недостатку простораПри враћању из резервне копије и недостатку простора
Видљивост корисникуУ подешавањима апликацијеСамо при повезивању са рачунаром

Android пружа посебан директоријум екстерног кеша преко context.externalCacheDir — налази се на SD картици (ако је инсталирана) и не брише се при деинсталацији апликације. Ово је згодно за велике медијске датотеке, али ствара ризик остављања отпада на меморијској картици. iOS нема концепт екстерног кеша: све привремене датотеке се чувају унутар Sandbox контејнера и гарантовано се бришу при деинсталацији. На Android кеш је видљив кориснику у подешавањима апликације и он га може ручно обрисати. На iOS системска подешавања не приказују величину кеша појединачних апликација — корисник може обрисати кеш само кроз уклањање и поновну инсталацију апликације, осим ако програмер није додао дугме за чишћење у интерфејсу.

Важна разлика — понашање при враћању. На iOS приликом враћања из iTunes или iCloud резервне копије директоријум Caches се не враћа, јер iOS сматра да ће кеширани подаци бити поново креирани при првом покретању. На Android приликом враћања из Google Drive архивира се само Internal Storage — кеш остаје празан након враћања. У оба случаја апликација мора исправно да ради са празним кешом, не приказујући кориснику грешке и не губећи функционалност.

Препоруке за управљање кешом

Вешто управљање кешом апликације један је од фактора који утичу на корисничко искуство и рејтинг апликације. Следеће препоруке ће помоћи да се избегну типични проблеми и повећа задовољство корисника.

  • Поставите границу величине кеша. Користите DiskLruCache или сличне библиотеке са навођењем максималног обима у мегабајтима. Након прекорачења границе, библиотека аутоматски брише најређе коришћене датотеке
  • Имплементирајте дугме за чишћење кеша у подешавањима апликације. Приказујте тренутну величину кеша (у формату „12.5 MB") и тражите потврду пре чишћења. Након чишћења ажурирајте приказану величину
  • Не чувајте у кешу датотеке које се не могу обновити. Ако су подаци критични за рад апликације, чувајте их у Internal Storage (Android) или Documents (iOS), а у кеш смјестите само копију за брзи приступ
  • Проверавајте доступност екстерног кеша пре уписа. На Android context.externalCacheDir може вратити null ако SD картица није инсталирана или недоступна. Увек предвидите fallback на интерни кеш
  • Користите политику застаревања (TTL) за кеширане податке. Не чувајте датотеке дуже него што је потребно: за слике — 24–48 сати, за одговоре API — од 5 минута до 1 сата у зависности од учесталости ажурирања података

Редовно пратите величину кеша у аналитици апликације. Интегришите слање метрике величине кеша у Firebase Analytics или сличан систем. Ако просечна величина кеша прелази 100 MB, оптимизујте стратегију кеширања: смањите TTL за ретко коришћене податке, уведите компресију слика пре кеширања (WebP уместо PNG, смањење квалитета JPEG на 85%), користите пагинацију за учитавање садржаја са сервера. Запамтите да су корисници са уређајима од 16–32 GB посебно осетљиви на величину апликације: када кеш достигне 200 MB, многи корисници почињу да траже начин за чишћење или једноставно бришу апликацију. Према Google анкети, 38% корисника је обрисало бар једну апликацију због неконтролисаног раста кеша и заузетог простора.

Често постављана питања

Да ли ћу изгубити податке ако обришем кеш апликације?

Не, чишћење кеша уклања само привремене датотеке (сачуване слике, одговоре сервера). Кориснички подаци (лозинке, подешавања, базе података) чувају се у Internal Storage и нису погођени при чишћењу кеша.

Која је максимална препоручена величина кеша за мобилну апликацију?

Google Play препоручује да не прелази 100 MB. За апликације са интензивним медијским садржајем (друштвене мреже, месинџери) дозвољено је до 200 MB под условом имплементације аутоматског чишћења и постављања границе кроз дискретни кеш.

Да ли iOS аутоматски чисти кеш апликације?

Да, iOS може обрисати датотеке из Library/Caches при недостатку простора или враћању из резервне копије. Систем користи механизам purgeable storage за аутоматско чишћење некритичних података.

Која је разлика између cacheDir и externalCacheDir на Android?

cacheDir се налази у интерној меморији уређаја и брише се при деинсталацији апликације. externalCacheDir се налази на SD картици и може остати након уклањања — потребно га је ручно очистити кроз код при првом покретању након поновне инсталације.

Како библиотеке за учитавање слика управљају кешом?

Библиотеке попут Glide, Picasso и Coil користе двослојно кеширање: L1 — RAM меморија (LRU кеш за тренутни приступ), L2 — диск (кеш директоријум апликације). Дисковни кеш има подесиву границу величине и политику уклањања старих датотека.

Резиме

  • Cache Directory — привремено складиште за податке који се могу поново створити, систем их може обрисати без упозорења при недостатку простора
  • Android пружа cacheDir (интерна меморија) и externalCacheDir (SD картица) — оба директоријума се не архивирају и могу бити обрисани од стране система
  • iOS користи Library/Caches, аутоматски искључен из иЦлоуд и iTunes резервних копија
  • Врсте кешираних података — слике (L2 кеш библиотека), API одговори (OkHttp Cache), прекомпајлирани ресурси (shader-и, привремене базе података)
  • Граница величине кеша — не више од 100–200 MB са аутоматским чишћењем старих датотека путем DiskLruCache или сличног механизма
  • Дугме за чишћење кеша у подешавањима апликације смањује број негативних рецензија и повећава поверење корисника
  • Критично важне податке никада не чувајте у кешу — користите Internal Storage (Android) или Documents Directory (iOS) за трајно чување

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође