Adresář mezipaměti aplikace — co to je, účel a jak čistit v mobilním vývoji

Autor: IT Sectr Publikováno: 2026-03-13 Doba čtení: 10 min

„Adresář mezipaměti aplikace“ je dočasné úložiště dat, která mohou být při příštím použití znovu vytvořena. Podle Android Developers, 2026 může systém při nedostatku paměti bez varování odstranit soubory z tohoto adresáře, proto by aplikace neměla spoléhat na zachování mezipaměti pro kriticky důležitá data. Správné používání adresáře mezipaměti snižuje objem zabraného místa a urychluje načítání obsahu.

Hlavní body

  • Cache Directory — dočasné úložiště souborů, které lze znovu vytvořit, není určeno pro trvalá data
  • Android poskytuje context.cacheDir a context.externalCacheDir pro ukládání mezipaměti na vnitřní a vnější paměti
  • iOS používá NSCachesDirectory, které je automaticky vyloučeno ze zálohování iCloud
  • Systém může mezipaměť kdykoli vyčistit — kritická data ukládejte do Internal Storage
  • Ruční čištění mezipaměti v nastavení aplikace zvyšuje důvěru uživatelů a zlepšuje hodnocení

Co je adresář mezipaměti aplikace?

Adresář mezipaměti je speciální adresář ve vnitřní (nebo vnější) paměti aplikace určený pro dočasné soubory. Hlavní rozdíl oproti Internal Storage: systém má právo mazat soubory z mezipaměti bez upozornění, pokud zařízení nemá dostatek volného místa. Aplikace by proto nikdy neměla v mezipaměti uchovávat jedinou kopii důležitých uživatelských dat. Mezipaměť je optimální pro stažené obrázky, odpovědi serveru, předkompilované zdroje a jakákoli jiná data, která lze vzdáleně obnovit nebo programově znovu vytvořit.

Na Androidu se adresář mezipaměti nachází v cestě /data/data/<package>/cache/ a je přístupný přes context.cacheDir. Velikost mezipaměti není explicitně omezena, ale Google Play doporučuje nepřekračovat 100 MB, protože aplikace s velkou mezipamětí získávají negativní hodnocení uživatelů. Na iOS se adresář mezipaměti nachází uvnitř Sandbox kontejneru v cestě Library/Caches/ a je přístupný přes NSCachesDirectory. iOS může odstranit soubory z Caches při obnově zařízení ze zálohy nebo při kritickém nedostatku místa — o tom je třeba informovat uživatele v dokumentaci aplikace.

Porozumění tomu, která data lze bezpečně umístit do mezipaměti a která by měla být uložena v Internal Storage nebo Documents, je klíčovou dovedností vývojáře. Nesprávné používání mezipaměti vede ke dvěma protichůdným problémům: buď aplikace zabírá příliš mnoho místa (pokud vývojář ukládá do mezipaměti to, co by mělo být v Documents), nebo uživatel ztrácí data (pokud vývojář ukládá do mezipaměti to, co by mělo být trvale uchováno). Dodržujte jednoduché pravidlo: pokud lze data obnovit — mezipaměť, pokud obnova není možná — Internal Storage nebo Documents.

Účel a typy ukládaných dat do mezipaměti

Různé typy dat mají různou rychlost znovuvytvoření a požadavky na objem. Porozumění těmto charakteristikám pomáhá vývojáři správně vybrat, které soubory umístit do mezipaměti a které do trvalého úložiště.

Mezipaměť obrázků a mediálních souborů

Nejčastější typ dat ukládaných do mezipaměti — obrázky stažené ze sítě. Knihovny Glide, Picasso a Coil automaticky ukládají stažené obrázky do adresáře mezipaměti aplikace. Typický objem mezipaměti obrázků v sociálních aplikacích je 50 až 200 MB. Velikost mezipaměti závisí na rozlišení obrazovky zařízení a množství prohlíženého obsahu. Glide používá dvouúrovňové ukládání do mezipaměti: nejprve zkontroluje L1 mezipaměť v operační paměti (LRU algoritmus), poté L2 mezipaměť na disku. To zajišťuje rychlé načítání znovu prohlížených obrázků bez opakovaného požadavku přes síť. Nastavení maximální velikosti diskové mezipaměti přes DiskCacheStrategy umožňuje kontrolovat zabrané místo: při překročení limitu knihovna automaticky odstraní nejméně používané soubory.

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 ->
        // zápis dat do mezipaměti
    }
}

Mezipaměť síťových požadavků

Odpovědi API požadavků lze ukládat do mezipaměti pro offline přístup a snížení zátěže serveru. OkHttp poskytuje vestavěnou podporu ukládání do mezipaměti přes třídu Cache. Hlavičky odpovědí Cache-Control a ETag řídí politiku mezipaměti: server určuje, jak dlouho je odpověď považována za platnou. Při správném nastavení může mezipaměť síťových požadavků snížit dobu načítání dat o 60-80% při opakovaných návštěvách a zajistit základní funkčnost aplikace bez internetového připojení. Velikost mezipaměti síťových požadavků zřídka přesahuje 10-20 MB, ale při aktivním používání aplikace může dosáhnout 50 MB. Nastavte maximální velikost mezipaměti přes konstruktor OkHttpClient.Builder a kontrolujte platnost dat v mezipaměti při každém spuštění aplikace.

Mezipaměť databází a předkompilovaných dat

Databáze SQLite mohou během provozu vytvářet dočasné soubory: WAL soubory (Write-Ahead Log), rollback logy a indexové stránky. Tyto soubory jsou uloženy vedle hlavní databáze, ale pro dočasné databáze (např. fulltextové vyhledávání nebo analytiku) lze určit umístění v adresáři mezipaměti. Předkompilované shader programy OpenGL a Vulkan jsou také ukládány do mezipaměti v tomto adresáři, což urychluje první načítání grafických scén. Na iOS je NSCachesDirectory doporučeno pro ukládání předkompilovaných dat Core Data a dočasných souborů zpracování obrázků.

Jak funguje čištění mezipaměti na Androidu a iOS

Čištění mezipaměti může probíhat automaticky (systémem) nebo ručně (uživatelem nebo aplikací). Porozumění chování systému v různých scénářích je nezbytné pro zabránění ztrátě dat.

Automatické čištění systémem

Na Androidu systém spouští proces čištění mezipaměti, když objem volného místa na oddílu /data klesne pod kritickou hranici (obvykle 500 MB). Proces cacheflush analyzuje velikost mezipaměti všech nainstalovaných aplikací a odstraňuje nejméně používané soubory, počínaje nejstaršími. Uživatel může také ručně vyčistit mezipaměť všech aplikací přes nastavení systému: „Nastavení → Úložiště → Mezipaměť → Vyčistit mezipaměť“. Na iOS dochází k automatickému čištění Caches při obnově zařízení ze zálohy — iOS neobnovuje obsah Library/Caches/. Kromě toho může iOS selektivně odstraňovat soubory z Caches, když dojde volné místo na zařízení, pomocí mechanismu purgeable storage pro izolovaná data.

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)
}

Programové čištění mezipaměti aplikací

Vývojář může implementovat programové čištění mezipaměti na žádost uživatele nebo podle plánu. Na Androidu pro vyčištění vlastní mezipaměti stačí odstranit všechny soubory v context.cacheDir a context.externalCacheDir. Na iOS lze vyčistit obsah Library/Caches/, ale neodstraňujte samotný adresář — pouze jeho obsah. Doporučuje se zobrazovat uživateli aktuální velikost mezipaměti v nastavení aplikace a tlačítko „Vyčistit mezipaměť“ s potvrzením. Podle údajů Google Play Console dostávají aplikace s tlačítkem pro čištění mezipaměti o 22% méně stížností na nedostatek místa ve srovnání s aplikacemi bez této funkce. Čištění mezipaměti by mělo být bezpečné: aplikace musí správně zpracovat situaci, kdy jsou soubory v mezipaměti odstraněny, a transparentně je znovu načíst při příštím přístupu.

Rozdíly cacheDir na Androidu a iOS

Navzdory stejnému účelu má implementace adresářů mezipaměti na Androidu a iOS významné rozdíly. Vývojář je musí zohlednit pro správnou funkčnost aplikace na obou platformách.

CharakteristikaAndroidiOS
Výchozí cesta/data/data/<package>/cache/Library/Caches/
API přístupucontext.cacheDirNSCachesDirectory
Externí mezipaměťcontext.externalCacheDirNeexistuje
ZálohováníNezálohuje seNezálohuje se
Systémové čištěníPři nedostatku místaPři obnově ze zálohy a nedostatku místa
Viditelnost pro uživateleV nastavení aplikacePouze při připojení k počítači

Android poskytuje samostatný adresář externí mezipaměti přes context.externalCacheDir — nachází se na SD kartě (pokud je nainstalována) a při odinstalaci aplikace se nemaže. To je vhodné pro velké mediální soubory, ale vytváří riziko zanechání nepořádku na paměťové kartě. iOS nemá koncepci externí mezipaměti: všechny dočasné soubory jsou uloženy uvnitř Sandbox kontejneru a při odinstalaci jsou garantovaně smazány. Na Androidu je mezipaměť viditelná uživateli v nastavení aplikace a může ji ručně vyčistit. Na iOS systémová nastavení nezobrazují velikost mezipaměti jednotlivých aplikací — uživatel může vyčistit mezipaměť pouze odstraněním a novou instalací aplikace, pokud vývojář nepřidal tlačítko čištění do rozhraní.

Důležitý rozdíl — chování při obnově. Na iOS při obnově ze zálohy iTunes nebo iCloud se adresář Caches neobnovuje, protože iOS předpokládá, že data v mezipaměti budou znovu vytvořena při prvním spuštění. Na Androidu se při obnově z Google Drive zálohuje pouze Internal Storage — mezipaměť zůstává po obnově prázdná. V obou případech musí aplikace správně fungovat s prázdnou mezipamětí, aniž by uživateli zobrazovala chyby nebo ztrácela funkčnost.

Doporučení pro správu mezipaměti

Správná správa mezipaměti aplikace je jedním z faktorů ovlivňujících uživatelský zážitek a hodnocení aplikace. Následující doporučení pomohou vyhnout se typickým problémům a zvýšit spokojenost uživatelů.

  • Nastavte limit velikosti mezipaměti. Použijte DiskLruCache nebo podobné knihovny s uvedením maximálního objemu v megabajtech. Při překročení limitu knihovna automaticky odstraní nejméně používané soubory
  • Implementujte tlačítko čištění mezipaměti v nastavení aplikace. Zobrazujte aktuální velikost mezipaměti (ve formátu „12,5 MB“) a před čištěním vyžadujte potvrzení. Po vyčištění aktualizujte zobrazenou velikost
  • Neukládejte do mezipaměti soubory, které nelze obnovit. Pokud jsou data kritická pro fungování aplikace, ukládejte je do Internal Storage (Android) nebo Documents (iOS) a do mezipaměti umístěte pouze kopii pro rychlý přístup
  • Zkontrolujte dostupnost externí mezipaměti před zápisem. Na Androidu může context.externalCacheDir vrátit null, pokud SD karta není nainstalována nebo není dostupná. Vždy počítejte s fallbackem na interní mezipaměť
  • Používejte politiku zastarávání (TTL) pro data v mezipaměti. Neuchovávejte soubory déle, než je nutné: pro obrázky — 24-48 hodin, pro odpovědi API — od 5 minut do 1 hodiny v závislosti na frekvenci aktualizace dat

Pravidelně sledujte velikost mezipaměti v analytice aplikace. Integrujte odesílání metriky velikosti mezipaměti do Firebase Analytics nebo podobného systému. Pokud průměrná velikost mezipaměti přesahuje 100 MB, optimalizujte strategii ukládání do mezipaměti: snižte TTL pro zřídka používaná data, implementujte kompresi obrázků před ukládáním do mezipaměti (WebP místo PNG, snížení kvality JPEG na 85%), používejte stránkování pro načítání obsahu ze serveru. Pamatujte, že uživatelé se zařízeními o kapacitě 16-32 GB jsou obzvláště citliví na velikost aplikace: při dosažení 200 MB mezipaměti mnoho uživatelů začíná hledat způsob čištění nebo jednoduše aplikaci odinstaluje. Podle průzkumu Google 38% uživatelů odstranilo alespoň jednu aplikaci kvůli nekontrolovanému růstu mezipaměti a zabranému místu.

Často kladené otázky

Přijdu o svá data, když vyčistím mezipaměť aplikace?

Ne, čištění mezipaměti odstraňuje pouze dočasné soubory (uložené obrázky, odpovědi serveru). Uživatelská data (hesla, nastavení, databáze) jsou uložena v Internal Storage a čištění mezipaměti se jich nedotkne.

Jaká je doporučená maximální velikost mezipaměti pro mobilní aplikaci?

Google Play doporučuje nepřekračovat 100 MB. Pro aplikace s intenzivním mediálním obsahem (sociální sítě, messengery) je přípustné až 200 MB za předpokladu implementace automatického čištění a nastavení limitu prostřednictvím diskrétní mezipaměti.

Čistí iOS mezipaměť aplikace automaticky?

Ano, iOS může odstranit soubory z Library/Caches při nedostatku místa nebo obnově ze zálohy. Systém používá mechanismus purgeable storage pro automatické čištění nekritických dat.

Jaký je rozdíl mezi cacheDir a externalCacheDir na Androidu?

cacheDir se nachází ve vnitřní paměti zařízení a při odinstalaci aplikace se smaže. externalCacheDir je umístěn na SD kartě a může po odinstalaci zůstat — je třeba jej ručně vyčistit pomocí kódu při prvním spuštění po přeinstalaci.

Jak knihovny pro načítání obrázků spravují mezipaměť?

Knihovny jako Glide, Picasso a Coil používají dvouúrovňové ukládání do mezipaměti: L1 — operační paměť (LRU mezipaměť pro okamžitý přístup), L2 — disk (adresář mezipaměti aplikace). Disková mezipaměť má nastavitelný limit velikosti a politiku odstraňování starých souborů.

Shrnutí

  • Cache Directory — dočasné úložiště pro znovu vytvořitelná data, která může systém bez varování vyčistit při nedostatku místa
  • Android poskytuje cacheDir (vnitřní paměť) a externalCacheDir (SD karta) — oba adresáře se nezálohují a mohou být systémem vyčištěny
  • iOS používá Library/Caches, automaticky vyloučené ze zálohování iCloud a iTunes
  • Typy dat v mezipaměti — obrázky (L2 mezipaměť knihoven), odpovědi API (OkHttp Cache), předkompilované zdroje (shadery, dočasné databáze)
  • Limit velikosti mezipaměti — ne více než 100-200 MB s automatickým čištěním starých souborů přes DiskLruCache nebo podobný mechanismus
  • Tlačítko čištění mezipaměti v nastavení aplikace snižuje počet negativních hodnocení a zvyšuje důvěru uživatelů
  • Kriticky důležitá data nikdy neukládejte do mezipaměti — používejte Internal Storage (Android) nebo Documents Directory (iOS) pro trvalé uložení

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také