Caches Directory: co to je, správa mezipaměti a čištění dat

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

Caches Directory — je adresář v sandboxu iOS aplikace, určený pro ukládání dočasných dat, která lze obnovit nebo znovu načíst ze sítě. Podle Apple File System Basics (2024) může systém kdykoli odstranit soubory z Caches Directory, aby uvolnil místo na disku — aplikace musí správně zpracovat absenci těchto souborů a v případě potřeby je obnovit. Na rozdíl od Documents Directory data z Caches nejsou zahrnuta do záloh iCloud a iTunes, což snižuje zatížení cloudového úložiště uživatele.

Hlavní body

  • Caches Directory — dočasné úložiště pro data, která lze obnovit ze sítě nebo znovu vytvořit.
  • Systém iOS může kdykoli odstranit soubory z Caches při nedostatku místa na zařízení.
  • Data z Caches nejsou zahrnuta do záloh iCloud a iTunes.
  • Cesta k adresáři se získává pomocí NSCachesDirectory nebo FileManager.urls(for: .cachesDirectory).
  • Hlavní rozdíl od Documents: Caches není určen pro uživatelská data, jejichž ztráta je kritická.

Co je Caches Directory v iOS?

Caches Directory — je adresář uvnitř sandboxu iOS aplikace, optimalizovaný pro ukládání dat, která lze v případě potřeby obnovit. Na rozdíl od Documents Directory není Caches určen pro uživatelská data — je to dočasné úložiště pro urychlení činnosti aplikace.

iOS používá Caches Directory pro umístění ukládaných do mezipaměti síťových odpovědí, předem načtených obrázků, serializovaných objektů a dat, která aplikace může obnovit. Vývojář by neměl spoléhat na dlouhodobé ukládání dat v tomto adresáři.

Podle údajů Apple WWDC 2020 přibližně 40% iOS aplikací používá Caches Directory pro ukládání obrázků v mezipaměti a síťových dat, přičemž 25% vývojářů nesprávně umísťuje do Caches data, která by měla být v Documents nebo Application Support, kvůli nepochopení rozdílů mezi těmito adresáři.

Kritická vlastnost Caches: aplikace musí správně zpracovat situaci, kdy byl soubor z mezipaměti odstraněn systémem. Pokud je po odstranění mezipaměti funkčnost aplikace narušena — znamená to, že data jsou uložena ve špatném adresáři.

Jak získat cestu k Caches Directory

V Swift se cesta k Caches Directory získává standardní metodou FileManager s uvedením .cachesDirectory. Je to jednoduchá operace, používaná prakticky v každé iOS aplikaci pracující se síťovými daty.

swift
import Foundation

let fileManager = FileManager.default
guard let cachesURL = fileManager.urls(
    for: .cachesDirectory,
    in: .userDomainMask
).first else { return }

// Uložit JSON do mezipaměti
let cacheFile = cachesURL.appendingPathComponent("feed_cache.json")
let jsonData = try JSONSerialization.data(
    withJSONObject: response,
    options: [.prettyPrinted]
)
try jsonData.write(to: cacheFile)

Objective-C používá NSSearchPathForDirectoriesInDomains s NSCachesDirectory. Přestože Apple doporučuje Swift API, kód Objective-C s Caches Directory zůstává funkční a podporovaný.

objective-c
@import Foundation;

NSArray *paths = NSSearchPathForDirectoriesInDomains(
    NSCachesDirectory,
    NSUserDomainMask,
    YES
);
NSString *cachesPath = paths.firstObject;
NSString *cacheFile = [cachesPath stringByAppendingPathComponent:@"feed_cache.plist"];

Swift projekty by měly preferovat API založené na URL: je typově bezpečné a lépe se integruje s moderními frameworky jako SwiftUI a Combine.

Jaká data ukládat v Caches

Caches Directory je optimální pro několik kategorií dat, která aplikace používá k urychlení činnosti, ale není jediným zdrojem pravdy. Správný výběr dat pro ukládání do mezipaměti přímo ovlivňuje UX a výkon aplikace.

Síťové odpovědi v mezipaměti

Odpovědi JSON z API, data zpravodajských kanálů, seznamy objektů — vše, co aplikace může znovu načíst ze serveru. Použijte URLCache pro automatické ukládání HTTP odpovědí do mezipaměti nebo ručně ukládejte serializované objekty.

Obrázky a multimediální soubory

Obrázky načtené ze sítě — nejčastější případ použití Caches Directory. Knihovny jako SDWebImage a Kingfisher standardně ukládají obrázky v mezipaměti právě do Caches.

Typ datVhodné pro CachesDoba uchování
JSON odpovědi APIAnoDo vyčištění systémem
Obrázky ze sítěAnoDo vyčištění systémem
Logy laděníPodmíněněLépe v tmp
Uložené pozice herNePouze Documents
Konfigurace aplikaceNeApplication Support

Pokud data nelze obnovit — jejich místo není v Caches. Toto je nejjednodušší kritérium: představte si, že zítra systém odstraní všechny soubory z Caches. Pokud aplikace nadále funguje správně — data jsou uložena správně.

Jak systém spravuje čištění mezipaměti

iOS automaticky spravuje čištění Caches Directory, ale přesné spouštěče a algoritmy nejsou dokumentovány Apple. Je známo, že systém může odstranit soubory z Caches při nedostatku místa na disku, stejně jako při funkci Offload Unused Apps.

Proces čištění je transparentní pro aplikaci: systém odstraňuje soubory bez upozornění. Aplikace musí před čtením zkontrolovat existenci souboru a v případě neexistence jej znovu vytvořit. Nespoléhání na dlouhodobé ukládání — je klíčový požadavek při práci s Caches.

Podle článku Apple "File System Basics" (2024) by aplikace neměla počítat s tím, že soubory v Caches Directory budou k dispozici mezi relacemi. Vývojářům se doporučuje implementovat fallback mechanismus: při neexistenci souboru v mezipaměti — načtěte data ze sítě a znovu je uložte do Caches.

Samostatný scénář — vykládání aplikace (Offload). Při aktivaci této funkce iOS odstraní aplikaci, ale zachová její Documents Directory. Caches Directory je přitom odstraněn. Uživatel, který obnovil aplikaci, nezíská data v mezipaměti — aplikace je musí znovu načíst.

Caches Directory vs Temporary Directory

Rozdíl mezi Caches a Temporary (tmp) často způsobuje zmatek mezi vývojáři. Oba adresáře ukládají dočasná data, ale s různými zárukami životnosti a účelem.

CharakteristikaCaches DirectoryTemporary Directory
ŽivotnostOd relace k relaci (není zaručena)Pouze v rámci relace
Čištění systémemPři nedostatku místaPři ukončení relace nebo restartu
ÚčelMezipaměť pro zrychleníVelmi dočasná data
PříkladObrázky v mezipamětiDočasný soubor před exportem
ZálohaNeNe

Zvolte Caches, pokud je užitečné uchovávat data mezi spuštěními aplikace, ale lze je obnovit. Použijte tmp, pokud jsou data potřebná pouze v aktuální relaci a po ukončení aplikace nemají hodnotu.

Nejlepší postupy práce s Caches

Práce s Caches Directory vyžaduje dodržování několika pravidel, která pomáhají vyhnout se ztrátě dat, neočekávanému chování aplikace a problémům s výkonem.

Vždy před čtením zkontrolujte existenci souboru

FileManager.fileExists(atPath:) by měl být volán před každým čtením z Caches. Pokud soubor chybí — načtěte data z původního zdroje a uložte do mezipaměti. Nikdy nepředpokládejte, že soubor z Caches existuje.

Omezte velikost mezipaměti

Nastavte maximální velikost Caches Directory v aplikaci. Například limit 50 MB pro obrázky a 10 MB pro odpovědi JSON. Při překročení limitu odstraňte nejstarší soubory podle data změny.

swift
import Foundation

func trimCache(to maxSizeBytes: Int) {
    let cachesURL = FileManager.default
        .urls(for: .cachesDirectory, in: .userDomainMask)
        .first!

    guard let enumerator = FileManager.default
        .enumerator(
            at: cachesURL,
            includingPropertiesForKeys: [.fileSizeKey, .contentModificationDateKey]
        )
    else { return }

    // Vypsat a odstranit staré soubory
    // při překročení limitu velikosti
}

Dodržování těchto postupů zaručuje, že aplikace funguje správně při všech akcích systému pro čištění mezipaměti a uživatel se nesetkává s neočekávanou ztrátou dat.

Často kladené otázky

Upozorňuje systém aplikaci před vyčištěním Caches Directory?

Ne, iOS neodesílá oznámení před odstraněním souborů z Caches. Proces čištění je pro aplikaci zcela transparentní. Jediný způsob, jak se o odstranění dozvědět — při pokusu o čtení souboru FileManager vrátí nil nebo vyvolá chybu a aplikace musí tuto situaci zpracovat.

Může uživatel ručně vyčistit Caches Directory?

Přímý přístup k Caches Directory přes Files nebo iTunes uživatel nemá. Uživatel však může vyčistit mezipaměť všech aplikací přes Nastavení > Obecné > Úložiště, výběrem konkrétní aplikace a stisknutím "Vykládání aplikace". iOS může také automaticky čistit mezipaměť při nedostatku místa.

Čím se liší URLCache od ručního ukládání do Caches Directory?

URLCache — je vestavěný mechanismus ukládání HTTP požadavků do mezipaměti z Foundation. Automaticky ukládá a načítá odpovědi v mezipaměti, přičemž na pozadí používá Caches Directory. Ruční ukládání poskytuje větší kontrolu: můžete zvolit formát, šifrovat data a spravovat životnost každého souboru individuálně.

Co se stane s Caches Directory při aktualizaci aplikace?

Při aktualizaci aplikace přes App Store je Caches Directory zachován. Obsah však může být systémem odstraněn, pokud nová aktualizace vyžaduje více místa pro instalaci. Vývojář by neměl spoléhat na zachování Caches po aktualizaci — to je další důvod pro implementaci fallback mechanismu.

Jak vypnout automatické ukládání do mezipaměti pro NSURLSession?

Nastavte URLCache na nil pro konkrétní relaci NSURLSession nebo použijte zásadu ukládání do mezipaměti .reloadIgnoringLocalCacheData. Můžete také vytvořit konfiguraci URLSessionConfiguration s prázdnou mezipamětí: sessionConfiguration.urlCache = nil. To je užitečné pro data, která musí být vždy aktuální.

Shrnutí

  • Caches Directory — dočasné úložiště pro data, která lze obnovit ze sítě nebo znovu vytvořit.
  • Systém iOS může kdykoli odstranit soubory z Caches bez upozornění aplikace.
  • Data z Caches nejsou zahrnuta do záloh iCloud a iTunes, což šetří místo.
  • Cesta k adresáři — FileManager.urls(for: .cachesDirectory) ve Swift nebo NSSearchPathForDirectoriesInDomains v Objective-C.
  • V Caches se ukládají obrázky v mezipaměti, odpovědi JSON API a další obnovitelná data.
  • Na rozdíl od tmp může Caches uchovávat data mezi spuštěními, ale bez záruky.
  • Vždy zkontrolujte existenci souboru před čtením z Caches a implementujte fallback načítání.

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é