Caches Directory: apa itu, manajemen cache dan pembersihan data

Penulis: IT Sectr Diterbitkan: 2026-07-10 Waktu membaca: 10 mnt

Caches Directory — adalah direktori dalam sandbox aplikasi iOS, yang dirancang untuk menyimpan data sementara yang dapat dipulihkan atau diunduh ulang dari jaringan. Menurut Apple File System Basics (2024), sistem dapat menghapus file dari Caches Directory kapan saja untuk mengosongkan ruang disk — aplikasi harus menangani ketiadaan file ini dengan benar dan memulihkannya jika diperlukan. Tidak seperti Documents Directory, data dari Caches tidak termasuk dalam pencadangan iCloud dan iTunes, yang mengurangi beban penyimpanan cloud pengguna.

Poin Penting

  • Caches Directory — penyimpanan sementara untuk data yang dapat dipulihkan dari jaringan atau dibuat ulang.
  • Sistem iOS dapat kapan saja menghapus file dari Caches saat ruang perangkat tidak mencukupi.
  • Data dari Caches tidak termasuk dalam pencadangan iCloud dan iTunes.
  • Path ke direktori diperoleh melalui NSCachesDirectory atau FileManager.urls(for: .cachesDirectory).
  • Perbedaan utama dari Documents: Caches tidak dirancang untuk data pengguna yang kehilangannya bersifat kritis.

Apa itu Caches Directory di iOS?

Caches Directory — adalah direktori di dalam sandbox aplikasi iOS, dioptimalkan untuk menyimpan data yang dapat dipulihkan saat diperlukan. Tidak seperti Documents Directory, Caches tidak dirancang untuk data pengguna — ini adalah penyimpanan sementara untuk mempercepat kerja aplikasi.

iOS menggunakan Caches Directory untuk menempatkan respons jaringan yang di-cache, gambar yang dimuat sebelumnya, objek yang diserialisasi, dan data yang dapat dipulihkan aplikasi. Pengembang tidak boleh mengandalkan penyimpanan data jangka panjang di direktori ini.

Menurut data Apple WWDC 2020, sekitar 40% aplikasi iOS menggunakan Caches Directory untuk menyimpan gambar cache dan data jaringan, sementara 25% pengembang salah menempatkan di Caches data yang seharusnya berada di Documents atau Application Support, karena tidak memahami perbedaan antara direktori-direktori ini.

Properti kritis Caches: aplikasi harus menangani situasi ketika file cache telah dihapus oleh sistem dengan benar. Jika setelah penghapusan cache fungsionalitas aplikasi terganggu — berarti data disimpan di direktori yang salah.

Cara mendapatkan path ke Caches Directory

Di Swift, path ke Caches Directory diperoleh melalui metode standar FileManager dengan menentukan .cachesDirectory. Ini adalah operasi sederhana yang digunakan di hampir setiap aplikasi iOS yang bekerja dengan data jaringan.

swift
import Foundation

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

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

Objective-C menggunakan NSSearchPathForDirectoriesInDomains dengan NSCachesDirectory. Meskipun Apple merekomendasikan Swift API, kode Objective-C dengan Caches Directory tetap berfungsi dan didukung.

objective-c
@import Foundation;

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

Proyek Swift sebaiknya memilih API berbasis URL: aman secara tipe dan terintegrasi lebih baik dengan framework modern seperti SwiftUI dan Combine.

Data apa yang disimpan di Caches

Caches Directory optimal untuk beberapa kategori data yang digunakan aplikasi untuk mempercepat kerja, tetapi bukan satu-satunya sumber kebenaran. Pemilihan data yang tepat untuk caching secara langsung mempengaruhi UX dan kinerja aplikasi.

Respons jaringan yang di-cache

Respons JSON dari API, data feed berita, daftar objek — semua yang dapat diunduh ulang aplikasi dari server. Gunakan URLCache untuk caching otomatis respons HTTP atau simpan objek serialisasi secara manual.

Gambar dan file media

Gambar yang diunduh dari jaringan — kasus penggunaan paling umum dari Caches Directory. Pustaka seperti SDWebImage dan Kingfisher secara default menyimpan gambar cache tepat di Caches.

Tipe DataCocok untuk CachesMasa Penyimpanan
JSON respons APIYaSampai pembersihan sistem
Gambar dari jaringanYaSampai pembersihan sistem
Log debuggingBersyaratLebih baik di tmp
Simpanan gameTidakHanya Documents
Konfigurasi aplikasiTidakApplication Support

Jika data tidak dapat dipulihkan — tempatnya bukan di Caches. Ini adalah kriteria paling sederhana: bayangkan besok sistem menghapus semua file dari Caches. Jika aplikasi terus berfungsi dengan benar — data disimpan dengan tepat.

Bagaimana sistem mengelola pembersihan cache

iOS secara otomatis mengelola pembersihan Caches Directory, tetapi pemicu dan algoritma yang tepat tidak didokumentasikan oleh Apple. Diketahui bahwa sistem dapat menghapus file dari Caches saat ruang disk tidak mencukupi, serta saat fungsi Offload Unused Apps bekerja.

Proses pembersihan transparan bagi aplikasi: sistem menghapus file tanpa pemberitahuan. Aplikasi harus memeriksa keberadaan file sebelum membaca dan membuatnya kembali jika tidak ada. Tidak mengandalkan penyimpanan jangka panjang — adalah persyaratan utama saat bekerja dengan Caches.

Menurut artikel Apple "File System Basics" (2024), aplikasi tidak boleh mengandalkan file di Caches Directory akan tersedia antar sesi. Pengembang disarankan untuk mengimplementasikan mekanisme fallback: saat file cache tidak ada — unduh data dari jaringan dan simpan lagi di Caches.

Skenario terpisah — offload aplikasi (Offload). Saat fungsi ini diaktifkan, iOS menghapus aplikasi tetapi mempertahankan Documents Directory. Caches Directory ikut dihapus. Pengguna yang memulihkan aplikasi tidak akan mendapatkan data cache — aplikasi harus mengunduhnya lagi.

Caches Directory vs Temporary Directory

Perbedaan antara Caches dan Temporary (tmp) sering menyebabkan kebingungan di kalangan pengembang. Kedua direktori menyimpan data sementara, tetapi dengan jaminan masa pakai dan tujuan yang berbeda.

KarakteristikCaches DirectoryTemporary Directory
Masa pakaiDari sesi ke sesi (tidak dijamin)Hanya dalam sesi
Pembersihan sistemSaat ruang tidak cukupSaat sesi berakhir atau restart
TujuanCache untuk mempercepatData sangat sementara
ContohGambar cacheFile sementara sebelum ekspor
CadanganTidakTidak

Pilih Caches jika data berguna untuk disimpan antar sesi aplikasi, tetapi dapat dipulihkan. Gunakan tmp jika data hanya diperlukan dalam sesi saat ini dan tidak memiliki nilai setelah aplikasi berakhir.

Praktik terbaik bekerja dengan Caches

Bekerja dengan Caches Directory memerlukan kepatuhan terhadap beberapa aturan yang membantu menghindari kehilangan data, perilaku aplikasi yang tidak terduga, dan masalah kinerja.

Selalu periksa keberadaan file sebelum membaca

FileManager.fileExists(atPath:) harus dipanggil sebelum setiap pembacaan dari Caches. Jika file tidak ada — unduh data dari sumber asli dan simpan di cache. Jangan pernah berasumsi bahwa file dari Caches ada.

Batasi ukuran cache

Tetapkan ukuran maksimum Caches Directory di aplikasi. Misalnya, batas 50 MB untuk gambar dan 10 MB untuk respons JSON. Saat batas terlampaui, hapus file tertua berdasarkan tanggal modifikasi.

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 }

    // Hitung dan hapus file lama
    // saat melebihi batas ukuran
}

Mematuhi praktik-praktik ini menjamin bahwa aplikasi berfungsi dengan benar pada semua tindakan pembersihan cache sistem, dan pengguna tidak mengalami kehilangan data yang tidak terduga.

Pertanyaan yang Sering Diajukan

Apakah sistem memberi tahu aplikasi sebelum membersihkan Caches Directory?

Tidak, iOS tidak mengirim notifikasi sebelum menghapus file dari Caches. Proses pembersihan sepenuhnya transparan bagi aplikasi. Satu-satunya cara untuk mengetahui penghapusan — saat mencoba membaca file, FileManager mengembalikan nil atau melempar error, dan aplikasi harus menangani situasi ini.

Bisakah pengguna membersihkan Caches Directory secara manual?

Akses langsung ke Caches Directory melalui Files atau iTunes tidak dimiliki pengguna. Namun, pengguna dapat membersihkan cache semua aplikasi melalui Pengaturan > Umum > Penyimpanan, memilih aplikasi tertentu dan menekan "Offload App". iOS juga dapat membersihkan cache secara otomatis saat ruang tidak cukup.

Apa perbedaan URLCache dengan penyimpanan manual di Caches Directory?

URLCache — adalah mekanisme caching bawaan untuk permintaan HTTP dari Foundation. Secara otomatis menyimpan dan memuat respons cache, menggunakan Caches Directory di belakang layar. Penyimpanan manual memberikan lebih banyak kontrol: dapat memilih format, mengenkripsi data, dan mengelola masa pakai setiap file secara individual.

Apa yang terjadi dengan Caches Directory saat pembaruan aplikasi?

Saat pembaruan aplikasi melalui App Store, Caches Directory dipertahankan. Namun, konten dapat dihapus oleh sistem jika pembaruan baru memerlukan lebih banyak ruang untuk instalasi. Pengembang tidak boleh mengandalkan kelestarian Caches setelah pembaruan — ini adalah alasan tambahan untuk mengimplementasikan mekanisme fallback.

Bagaimana cara menonaktifkan caching otomatis untuk NSURLSession?

Setel URLCache ke nil untuk sesi NSURLSession tertentu atau gunakan kebijakan caching .reloadIgnoringLocalCacheData. Juga dapat membuat konfigurasi URLSessionConfiguration dengan cache kosong: sessionConfiguration.urlCache = nil. Ini berguna untuk data yang harus selalu terkini.

Kesimpulan

  • Caches Directory — penyimpanan sementara untuk data yang dapat dipulihkan dari jaringan atau dibuat ulang.
  • Sistem iOS dapat kapan saja menghapus file dari Caches tanpa memberi tahu aplikasi.
  • Data dari Caches tidak termasuk dalam cadangan iCloud dan iTunes, menghemat ruang.
  • Path ke direktori — FileManager.urls(for: .cachesDirectory) di Swift atau NSSearchPathForDirectoriesInDomains di Objective-C.
  • Di Caches disimpan gambar cache, respons JSON API, dan data yang dapat dipulihkan lainnya.
  • Tidak seperti tmp, Caches dapat menyimpan data antar sesi, tetapi tanpa jaminan.
  • Selalu periksa keberadaan file sebelum membaca dari Caches dan implementasikan pemuatan fallback.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga