Caches Directory: vad är det, cachehantering och rensning av data

Författare: IT Sectr Publicerad: 2026-07-10 Lästid: 10 min

Caches Directory — är en katalog i sandlådan för iOS-appen, avsedd för lagring av temporär data som kan återställas eller laddas om från nätverket. Enligt Apple File System Basics (2024) kan systemet när som helst ta bort filer från Caches Directory för att frigöra diskutrymme — appen måste korrekt hantera frånvaron av dessa filer och vid behov återställa dem. Till skillnad från Documents Directory inkluderas data från Caches inte i iCloud- och iTunes-säkerhetskopior, vilket minskar belastningen på användarens molnlagring.

Huvudpunkter

  • Caches Directory — temporär lagring för data som kan återställas från nätverket eller återskapas.
  • iOS-systemet kan när som helst ta bort filer från Caches vid brist på utrymme på enheten.
  • Data från Caches inkluderas inte i iCloud- och iTunes-säkerhetskopior.
  • Sökvägen till katalogen erhålls via NSCachesDirectory eller FileManager.urls(for: .cachesDirectory).
  • Huvudskillnaden från Documents: Caches är inte avsedd för användardata vars förlust är kritisk.

Vad är Caches Directory i iOS?

Caches Directory — är en katalog inuti sandlådan för iOS-appen, optimerad för lagring av data som kan återställas vid behov. Till skillnad från Documents Directory är Caches inte avsedd för användardata — det är temporär lagring för att påskynda appens funktion.

iOS använder Caches Directory för att placera cachade nätverkssvar, förladdade bilder, serialiserade objekt och data som appen kan återställa. Utvecklaren bör inte förlita sig på långtidslagring av data i denna katalog.

Enligt data från Apple WWDC 2020 använder cirka 40% av iOS-apparna Caches Directory för lagring av cachade bilder och nätverksdata, medan 25% av utvecklarna felaktigt placerar data i Caches som borde finnas i Documents eller Application Support, på grund av bristande förståelse för skillnaderna mellan dessa kataloger.

Kritisk egenskap hos Caches: appen måste korrekt hantera situationen när en cachefil har tagits bort av systemet. Om appens funktionalitet störs efter borttagning av cachen — betyder det att data lagras i fel katalog.

Hur man får sökvägen till Caches Directory

I Swift erhålls sökvägen till Caches Directory med standardmetoden FileManager med .cachesDirectory. Detta är en enkel operation som används i praktiskt taget varje iOS-app som arbetar med nätverksdata.

swift
import Foundation

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

// Spara cachad JSON
let cacheFile = cachesURL.appendingPathComponent("feed_cache.json")
let jsonData = try JSONSerialization.data(
    withJSONObject: response,
    options: [.prettyPrinted]
)
try jsonData.write(to: cacheFile)

Objective-C använder NSSearchPathForDirectoriesInDomains med NSCachesDirectory. Även om Apple rekommenderar Swift API, förblir Objective-C-kod med Caches Directory fungerande och supportad.

objective-c
@import Foundation;

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

Swift-projekt bör föredra URL-baserat API: det är typsäkert och integreras bättre med moderna ramverk som SwiftUI och Combine.

Vilken data ska lagras i Caches

Caches Directory är optimal för flera kategorier av data som appen använder för att påskynda arbetet, men är inte den enda sanningskällan. Rätt val av data för cachning påverkar direkt UX och appens prestanda.

Cachade nätverkssvar

JSON-svar från API, nyhetsflödesdata, objektlistor — allt som appen kan ladda om från servern. Använd URLCache för automatisk cachning av HTTP-svar eller spara serialiserade objekt manuellt.

Bilder och mediafiler

Bilder laddade från nätverket — det vanligaste användningsfallet för Caches Directory. Bibliotek som SDWebImage och Kingfisher sparar som standard cachade bilder just i Caches.

DatatypLämplig för CachesLagringstid
JSON API-svarJaTills systemrensning
Bilder från nätverkJaTills systemrensning
Loggar felsökningVillkorligtBättre i tmp
Spar spelNejEndast Documents
Konfigurationer appNejApplication Support

Om data inte kan återställas — är deras plats inte i Caches. Detta är det enklaste kriteriet: föreställ dig att systemet imorgon tar bort alla filer från Caches. Om appen fortsätter att fungera korrekt — lagras data korrekt.

Hur systemet hanterar rensning av cache

iOS hanterar automatiskt rensning av Caches Directory, men exakta triggers och algoritmer dokumenteras inte av Apple. Det är känt att systemet kan ta bort filer från Caches vid brist på diskutrymme, samt vid funktionen Offload Unused Apps.

Rensningsprocessen är transparent för appen: systemet tar bort filer utan meddelande. Appen måste kontrollera filens existens före läsning och skapa den på nytt om den saknas. Att inte förlita sig på långtidslagring — är ett nyckelkrav vid arbete med Caches.

Enligt Apples artikel "File System Basics" (2024) bör appen inte räkna med att filer i Caches Directory kommer att vara tillgängliga mellan sessioner. Utvecklare rekommenderas att implementera en fallback-mekanism: när cachefilen saknas — ladda data från nätverket och spara igen i Caches.

Ett separat scenario — avladdning av appen (Offload). Vid aktivering av denna funktion tar iOS bort appen men behåller dess Documents Directory. Caches Directory tas bort i processen. En användare som återställt appen får inte cachad data — appen måste ladda den på nytt.

Caches Directory vs Temporary Directory

Skillnaden mellan Caches och Temporary (tmp) orsakar ofta förvirring bland utvecklare. Båda katalogerna lagrar temporär data, men med olika garantier för livslängd och syfte.

EgenskapCaches DirectoryTemporary Directory
LivslängdFrån session till session (ej garanterad)Endast inom sessionen
SystemrensningVid utrymmesbristVid sessionsslut eller omstart
SyfteCache för snabbare funktionMycket temporär data
ExempelCachade bilderTemporär fil före export
SäkerhetskopiaNejNej

Välj Caches om data är användbar att spara mellan appstarter, men kan återställas. Använd tmp om data endast behövs i den aktuella sessionen och saknar värde efter att appen avslutats.

Bästa praxis för arbete med Caches

Arbete med Caches Directory kräver efterlevnad av flera regler som hjälper till att undvika dataförlust, oväntat appbeteende och prestandaproblem.

Kontrollera alltid filens existens före läsning

FileManager.fileExists(atPath:) bör anropas före varje läsning från Caches. Om filen saknas — ladda data från den ursprungliga källan och spara i cachen. Anta aldrig att en fil från Caches existerar.

Begränsa cache-storleken

Ställ in maximal storlek för Caches Directory i appen. Till exempel en gräns på 50 MB för bilder och 10 MB för JSON-svar. Vid överskridande av gränsen, ta bort de äldsta filerna efter ändringsdatum.

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äkna upp och ta bort gamla filer
    // när storleksgränsen överskrids
}

Efterlevnad av denna praxis garanterar att appen fungerar korrekt vid alla systemåtgärder för cache-rensning och att användaren inte drabbas av oväntad dataförlust.

Vanliga frågor

Meddelar systemet appen före rensning av Caches Directory?

Nej, iOS skickar inte meddelanden före borttagning av filer från Caches. Rensningsprocessen är helt transparent för appen. Det enda sättet att få reda på borttagning — vid försök att läsa filen returnerar FileManager nil eller kastar ett fel, och appen måste hantera denna situation.

Kan användaren manuellt rensa Caches Directory?

Direkt åtkomst till Caches Directory via Files eller iTunes har användaren inte. Användaren kan dock rensa cache för alla appar via Inställningar > Allmänt > Lagring, genom att välja en specifik app och trycka på "Avladda app". iOS kan också automatiskt rensa cache vid utrymmesbrist.

Vad är skillnaden mellan URLCache och manuell lagring i Caches Directory?

URLCache — är en inbyggd mekanism för cachning av HTTP-förfrågningar från Foundation. Den sparar och laddar automatiskt cachade svar, med Caches Directory i bakgrunden. Manuell lagring ger mer kontroll: man kan välja format, kryptera data och hantera livslängden för varje fil individuellt.

Vad händer med Caches Directory vid uppdatering av appen?

Vid uppdatering av appen via App Store behålls Caches Directory. Innehållet kan dock tas bort av systemet om den nya uppdateringen kräver mer utrymme för installation. Utvecklaren bör inte förlita sig på att Caches bevaras efter uppdatering — detta är en extra anledning att implementera en fallback-mekanism.

Hur stänger man av automatisk cachning för NSURLSession?

Sätt URLCache till nil för en specifik NSURLSession-session eller använd cachningspolicyn .reloadIgnoringLocalCacheData. Man kan också skapa en URLSessionConfiguration-konfiguration med tom cache: sessionConfiguration.urlCache = nil. Detta är användbart för data som alltid måste vara aktuell.

Sammanfattning

  • Caches Directory — temporär lagring för data som kan återställas från nätverket eller återskapas.
  • iOS-systemet kan när som helst ta bort filer från Caches utan att meddela appen.
  • Data från Caches inkluderas inte i iCloud- och iTunes-säkerhetskopior, vilket sparar utrymme.
  • Sökvägen till katalogen — FileManager.urls(for: .cachesDirectory) i Swift eller NSSearchPathForDirectoriesInDomains i Objective-C.
  • I Caches lagras cachade bilder, JSON API-svar och annan återställningsbar data.
  • Till skillnad från tmp kan Caches behålla data mellan starter, men utan garanti.
  • Kontrollera alltid filens existens före läsning från Caches och implementera fallback-laddning.

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också