Caches Directory: mi ez, a gyorsítótár kezelése és az adatok törlése

Szerző: IT Sectr Megjelenés: 2026-07-10 Olvasási idő: 10 perc

Caches Directory — egy könyvtár az iOS alkalmazás homokozójában, amely ideiglenes adatok tárolására szolgál, amelyek visszaállíthatók vagy újratölthetők a hálózatból. Az Apple File System Basics (2024) szerint a rendszer bármikor törölheti a fájlokat a Caches Directory-ból a lemezterület felszabadítása érdekében — az alkalmazásnak megfelelően kell kezelnie e fájlok hiányát, és szükség esetén vissza kell állítania azokat. A Documents Directory-val ellentétben a Caches adatai nem kerülnek be az iCloud és iTunes biztonsági mentésbe, ami csökkenti a felhasználó felhőtárhelyének terhelését.

Főbb pontok

  • Caches Directory — ideiglenes tároló a hálózatból visszaállítható vagy újra létrehozható adatok számára.
  • Az iOS rendszer bármikor törölheti a fájlokat a Caches-ből, ha nincs elég hely az eszközön.
  • A Caches adatai nem kerülnek be az iCloud és iTunes biztonsági mentésbe.
  • A könyvtár elérési útja NSCachesDirectory vagy FileManager.urls(for: .cachesDirectory) segítségével kapható meg.
  • A fő különbség a Documents-tól: a Caches nem szolgál olyan felhasználói adatokra, amelyek elvesztése kritikus.

Mi az a Caches Directory iOS-ben?

Caches Directory — egy könyvtár az iOS alkalmazás homokozójában, optimalizálva olyan adatok tárolására, amelyek szükség esetén visszaállíthatók. A Documents Directory-val ellentétben a Caches nem felhasználói adatokra szolgál — ez egy ideiglenes tároló az alkalmazás működésének gyorsítására.

Az iOS a Caches Directory-t használja gyorsítótárazott hálózati válaszok, előre betöltött képek, szerializált objektumok és olyan adatok elhelyezésére, amelyeket az alkalmazás visszaállíthat. A fejlesztő nem támaszkodhat az adatok hosszú távú tárolására ebben a könyvtárban.

Az Apple WWDC 2020 adatai szerint az iOS alkalmazások körülbelül 40%-a használja a Caches Directory-t gyorsítótárazott képek és hálózati adatok tárolására, míg a fejlesztők 25%-a helytelenül helyezi el a Caches-ben azokat az adatokat, amelyeknek a Documents vagy Application Support könyvtárban kellene lenniük, mert nem értik a könyvtárak közötti különbségeket.

A Caches kritikus tulajdonsága: az alkalmazásnak megfelelően kell kezelnie azt a helyzetet, amikor a gyorsítótár-fájlt a rendszer törölte. Ha a gyorsítótár törlése után az alkalmazás funkciói megsérülnek — az azt jelenti, hogy az adatok rossz könyvtárban vannak tárolva.

Hogyan kaphatjuk meg a Caches Directory elérési útját

Swift-ben a Caches Directory elérési útja a FileManager szabványos metódusával kapható meg a .cachesDirectory megadásával. Ez egy egyszerű művelet, amelyet gyakorlatilag minden hálózati adatokkal dolgozó iOS alkalmazás használ.

swift
import Foundation

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

// Gyorsítótárazott JSON mentése
let cacheFile = cachesURL.appendingPathComponent("feed_cache.json")
let jsonData = try JSONSerialization.data(
    withJSONObject: response,
    options: [.prettyPrinted]
)
try jsonData.write(to: cacheFile)

Az Objective-C a NSSearchPathForDirectoriesInDomains-t használja NSCachesDirectory-val. Bár az Apple a Swift API-t ajánlja, az Objective-C kód a Caches Directory-val továbbra is működőképes és támogatott.

objective-c
@import Foundation;

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

A Swift projekteknek az URL-alapú API-t kell előnyben részesíteniük: ez típusbiztos és jobban integrálható olyan modern keretrendszerekkel, mint a SwiftUI és a Combine.

Milyen adatokat tároljunk a Caches-ben

Caches Directory optimális több olyan adatkategória számára, amelyeket az alkalmazás a működés gyorsítására használ, de nem ez az egyetlen igazságforrás. A gyorsítótárazandó adatok helyes kiválasztása közvetlenül befolyásolja az alkalmazás UX-ét és teljesítményét.

Gyorsítótárazott hálózati válaszok

JSON-válaszok API-tól, hírcsatorna-adatok, objektumlisták — minden, amit az alkalmazás újra tud tölteni a szerverről. Használja az URLCache-t a HTTP-válaszok automatikus gyorsítótárazásához, vagy manuálisan mentse a szerializált objektumokat.

Képek és médiafájlok

Képek letöltve a hálózatból — a Caches Directory leggyakoribb használati esete. Az olyan könyvtárak, mint az SDWebImage és a Kingfisher, alapértelmezés szerint pontosan a Caches-ben tárolják a gyorsítótárazott képeket.

AdattípusAlkalmas a Caches-hezMegőrzési idő
JSON API-válaszokIgenA rendszer törléséig
Képek a hálózatbólIgenA rendszer törléséig
Naplók hibakereséshezFeltételesJobb a tmp-ben
Játék mentésekNemCsak Documents
Konfigurációk alkalmazáshozNemApplication Support

Ha az adatok nem állíthatók vissza — a helyük nem a Caches-ben van. Ez a legegyszerűbb kritérium: képzelje el, hogy holnap a rendszer törli az összes fájlt a Caches-ből. Ha az alkalmazás továbbra is megfelelően működik — az adatok helyesen vannak tárolva.

Hogyan kezeli a rendszer a gyorsítótár törlését

Az iOS automatikusan kezeli a Caches Directory törlését, de a pontos triggerek és algoritmusok nincsenek dokumentálva az Apple által. Ismert, hogy a rendszer törölhet fájlokat a Caches-ből, ha nincs elegendő lemezterület, valamint az Offload Unused Apps funkció működése során.

A törlési folyamat átlátható az alkalmazás számára: a rendszer értesítés nélkül törli a fájlokat. Az alkalmazásnak ellenőriznie kell a fájl meglétét olvasás előtt, és hiány esetén újra létre kell hoznia. A hosszú távú tárolásra való támaszkodás elkerülése — kulcsfontosságú követelmény a Caches használatakor.

Az Apple "File System Basics" (2024) cikke szerint az alkalmazás nem számíthat arra, hogy a Caches Directory-ban lévő fájlok elérhetőek lesznek a munkamenetek között. A fejlesztőknek ajánlott fallback mechanizmust implementálniuk: ha a gyorsítótárazott fájl hiányzik — töltse le az adatokat a hálózatból, és mentse el újra a Caches-be.

Külön forgatókönyv — az alkalmazás kiürítése (Offload). E funkció aktiválásakor az iOS törli az alkalmazást, de megtartja annak Documents Directory-ját. A Caches Directory ezzel együtt törlődik. Az a felhasználó, aki visszaállította az alkalmazást, nem kapja meg a gyorsítótárazott adatokat — az alkalmazásnak újra le kell töltenie azokat.

Caches Directory vs Temporary Directory

A Caches és a Temporary (tmp) közötti különbség gyakran zavart okoz a fejlesztők körében. Mindkét könyvtár ideiglenes adatokat tárol, de eltérő élettartam-garanciákkal és célokkal.

JellemzőCaches DirectoryTemporary Directory
ÉlettartamMunkamenettől munkamenetig (nem garantált)Csak a munkameneten belül
Rendszer törlésHelyhiány eseténA munkamenet végén vagy újraindításkor
CélGyorsítótár a sebességhezNagyon ideiglenes adatok
PéldaGyorsítótárazott képekIdeiglenes fájl exportálás előtt
Biztonsági mentésNemNem

Válassza a Caches-t, ha az adatok hasznosak az alkalmazás indítások között, de visszaállíthatók. Használja a tmp-t, ha az adatok csak az aktuális munkamenetben szükségesek, és nincs értékük az alkalmazás befejezése után.

Legjobb gyakorlatok a Caches használatához

A Caches Directory-val való munka néhány szabály betartását igényli, amelyek segítenek elkerülni az adatvesztést, az alkalmazás váratlan viselkedését és a teljesítményproblémákat.

Mindig ellenőrizze a fájl meglétét olvasás előtt

A FileManager.fileExists(atPath:)-t minden Caches-ből történő olvasás előtt meg kell hívni. Ha a fájl hiányzik — töltse le az adatokat az eredeti forrásból, és mentse el a gyorsítótárba. Soha ne feltételezze, hogy a Caches-ből származó fájl létezik.

Korlátozza a gyorsítótár méretét

Állítsa be a Caches Directory maximális méretét az alkalmazásban. Például 50 MB-os korlát a képekhez és 10 MB a JSON-válaszokhoz. A korlát túllépésekor törölje a legrégebbi fájlokat a módosítás dátuma szerint.

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 }

    // Régi fájlok felsorolása és törlése
    // méretkorlát túllépésekor
}

E gyakorlatok betartása garantálja, hogy az alkalmazás megfelelően működik a rendszer gyorsítótár-törlési műveletei során, és a felhasználó nem találkozik váratlan adatvesztéssel.

Gyakran Ismételt Kérdések

Értesíti a rendszer az alkalmazást a Caches Directory törlése előtt?

Nem, az iOS nem küld értesítéseket a fájlok Caches-ből való törlése előtt. A törlési folyamat teljesen átlátható az alkalmazás számára. Az egyetlen módja a törlés megtudásának — a fájl olvasásakor a FileManager nil-t ad vissza vagy hibát dob, és az alkalmazásnak kezelnie kell ezt a helyzetet.

Tudja a felhasználó manuálisan törölni a Caches Directory-t?

Közvetlen hozzáférése a Caches Directory-hoz Files-on vagy iTunes-on keresztül a felhasználónak nincs. A felhasználó azonban törölheti az összes alkalmazás gyorsítótárát a Beállítások > Általános > Tárhely menüpontban, kiválasztva egy adott alkalmazást és megnyomva az "Alkalmazás kiürítése" gombot. Az iOS automatikusan is törölheti a gyorsítótárat helyhiány esetén.

Miben különbözik az URLCache a manuális mentéstől a Caches Directory-ban?

Az URLCache — egy beépített mechanizmus a HTTP-kérések gyorsítótárazására a Foundation-ből. Automatikusan menti és betölti a gyorsítótárazott válaszokat, a háttérben a Caches Directory-t használva. A manuális mentés nagyobb kontrollt biztosít: kiválaszthatja a formátumot, titkosíthatja az adatokat, és egyedileg kezelheti az egyes fájlok élettartamát.

Mi történik a Caches Directory-val az alkalmazás frissítésekor?

Az alkalmazás App Store-on keresztüli frissítésekor a Caches Directory megmarad. A tartalmat azonban a rendszer törölheti, ha az új frissítés több helyet igényel a telepítéshez. A fejlesztő nem támaszkodhat a Caches megmaradására frissítés után — ez egy további ok a fallback mechanizmus implementálására.

Hogyan lehet kikapcsolni az automatikus gyorsítótárazást az NSURLSession számára?

Állítsa az URLCache-t nil-re egy adott NSURLSession-munkamenethez, vagy használja a .reloadIgnoringLocalCacheData gyorsítótárazási házirendet. Létrehozhat egy URLSessionConfiguration konfigurációt is üres gyorsítótárral: sessionConfiguration.urlCache = nil. Ez hasznos azokhoz az adatokhoz, amelyeknek mindig naprakésznek kell lenniük.

Összefoglalás

  • Caches Directory — ideiglenes tároló a hálózatból visszaállítható vagy újra létrehozható adatok számára.
  • Az iOS rendszer bármikor törölheti a fájlokat a Caches-ből anélkül, hogy értesítené az alkalmazást.
  • A Caches adatai nem kerülnek be az iCloud és iTunes biztonsági mentésekbe, helyet takarítva meg.
  • A könyvtár elérési útja — FileManager.urls(for: .cachesDirectory) Swift-ben vagy NSSearchPathForDirectoriesInDomains Objective-C-ben.
  • A Caches-ben gyorsítótárazott képek, JSON API-válaszok és egyéb visszaállítható adatok tárolódnak.
  • A tmp-től eltérően a Caches megőrizheti az adatokat az indítások között, de garancia nélkül.
  • Mindig ellenőrizze a fájl meglétét a Caches-ből való olvasás előtt, és implementáljon fallback betöltést.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is