Disk Cache: apa itu, cache disk iOS dan prinsip kerja

Penulis: IT Sectr Diterbitkan: 2026-07-11 Waktu membaca: 7 mnt

Disk Cache — adalah mekanisme penyimpanan data sementara di disk perangkat, yang memungkinkan aplikasi iOS mempercepat akses berulang ke sumber daya yang telah dimuat sebelumnya. Menurut Apple Developer Documentation, 2024, Disk Cache mengurangi penggunaan jaringan, menurunkan beban baterai, dan memastikan aplikasi berfungsi dalam mode offline. iOS menyediakan beberapa mekanisme caching bawaan: URLCache untuk permintaan jaringan, NSCache untuk memori RAM, dan implementasi kustom melalui direktori Caches.

Poin utama

  • Disk Cache — penyimpanan data di disk untuk mempercepat akses berulang dan mengurangi lalu lintas
  • URLCache — mekanisme bawaan untuk caching permintaan HTTP di iOS
  • Caches directory — direktori Sandbox khusus untuk data sementara aplikasi
  • Invalidasi cache sangat penting untuk keaktualan data — strategi berdasarkan waktu, peristiwa, dan versi
  • Sistem dapat membersihkan cache saat ruang tidak mencukupi — cache tidak boleh berisi data yang tak tergantikan

Apa itu Disk Cache di iOS?

Disk Cache — adalah teknologi penyimpanan sementara data di media penyimpanan permanen perangkat (memori flash) untuk mempercepat permintaan berikutnya ke data yang sama. Berbeda dengan cache RAM, Disk Cache menyimpan data setelah restart aplikasi dan bahkan perangkat.

iOS menyediakan dua tingkat caching utama: operasional (NSCache, memori) dan disk (URLCache, sistem file). Cache disk 10–100 kali lebih lambat dari cache operasional, tetapi secara signifikan lebih cepat dari permintaan jaringan — perbedaannya bisa mencapai 2 hingga 3 kali lipat. Strategi optimal menggunakan cache dua tingkat: memori untuk data panas dan disk untuk data dingin.

Menurut Apple Performance Optimization Guide, 2023, Disk Cache yang dikonfigurasi dengan benar mengurangi waktu muat konten sebesar 60–80% untuk tampilan berulang dan mengurangi konsumsi lalu lintas sebesar 40–70%. Untuk aplikasi dengan konten media (gambar, video, audio), caching adalah faktor UX yang kritis.

URLCache: mekanisme caching bawaan

URLCache — adalah kelas Foundation bawaan yang mengimplementasikan cache gabungan untuk permintaan URLSession. Secara otomatis menyimpan respons server di disk dan memori, mengelola ukuran cache dan kebijakan invalidasi berdasarkan header HTTP Cache-Control, Expires, dan ETag.

swift
import Foundation

let cache = URLCache(
    memoryCapacity: 50 * 1024 * 1024,
    diskCapacity: 200 * 1024 * 1024,
    diskPath: "network-cache"
)

URLCache.shared = cache

let config = URLSessionConfiguration.default
config.urlCache = cache
config.requestCachePolicy = .returnCacheDataElseLoad

let session = URLSession(configuration: config)

Kebijakan caching URLCache menentukan kapan menggunakan data yang di-cache dan kapan melakukan permintaan baru. Kebijakan utama: useProtocolCachePolicy (berdasarkan header server), reloadIgnoringLocalCacheData (selalu dari server), returnCacheDataElseLoad (cache dulu), returnCacheDataDontLoad (hanya cache — mode offline).

Cache-Control — header HTTP yang dikirim server bersama respons, menunjukkan max-age (waktu hidup dalam detik), must-revalidate (memeriksa keaktualan), no-cache (jangan gunakan tanpa verifikasi), dan no-store (jangan cache). iOS secara ketat mematuhi header ini secara otomatis saat menggunakan URLCache dengan kebijakan useProtocolCachePolicy.

Strategi caching kustom dan invalidasi

Cache kustom diperlukan ketika URLCache bawaan tidak mencukupi: untuk menyimpan gambar yang diproses, model data yang diserialisasi, atau hasil perhitungan. Dalam kasus seperti itu, pengembang membuat sistem caching sendiri berdasarkan direktori Caches di Sandbox aplikasi.

swift
class DiskCache<T: Codable> {
    private let cacheDir: URL
    private let encoder = JSONEncoder()
    private let decoder = JSONDecoder()

    init() {
        let paths = FileManager.default
            .urls(for: .cachesDirectory,
                     in: .userDomainMask)
        cacheDir = paths[0].appendingPathComponent(
            "data-cache", isDirectory: true
        )
        try? FileManager.default
            .createDirectory(at: cacheDir,
                             withIntermediateDirectories: true)
    }

    func set(value: T, for key: String) {
        let url = cacheDir.appendingPathComponent(
            SHA256.hash(key)
        )
        if let data = try? encoder.encode(value) {
            try? data.write(to: url)
        }
    }

    func get(for key: String) -> T? {
        let url = cacheDir.appendingPathComponent(
            SHA256.hash(key)
        )
        guard let data = try? Data(contentsOf: url) else { return nil }
        return try? decoder.decode(T.self, from: data)
    }

    func clearAll() {
        try? FileManager.default
            .removeItem(at: cacheDir)
    }
}

Strategi invalidasi cache menentukan kapan data yang disimpan dianggap usang: TTL (Time-To-Live) — data hidup untuk waktu tetap setelah penulisan; event-driven — invalidasi saat peristiwa terjadi (misalnya, pembaruan data di server); version-based — invalidasi saat versi API atau format data berubah; LRU (Least Recently Used) — penghapusan otomatis catatan yang paling jarang digunakan saat melampaui batas ukuran.

Aturan praktis: TTL cocok untuk berita dan konten yang menjadi usang secara terprediksi. Event-driven — untuk data yang dikelola server melalui notifikasi push. Version-based — untuk konfigurasi dan cache model data. LRU — pilihan universal untuk file media dengan ruang disk terbatas.

Kinerja dan batasan cache

Kinerja Disk Cache diukur dengan hit ratio — persentase permintaan yang dipenuhi dari cache tanpa mengakses jaringan. Hit ratio tipikal untuk cache gambar yang dikonfigurasi dengan baik adalah 70–90%, untuk respons API — 40–60%, untuk video streaming — 30–50%.

Jenis dataHit ratio tipikalUkuran cache yang disarankan
Gambar70–90%100–500 MB
Respons API JSON40–60%10–50 MB
Video/audio30–50%500 MB — 1 GB
Font dan sumber daya90–99%5–20 MB
Konten web50–70%50–200 MB

Batasan Disk Cache di iOS: sistem dapat menghapus konten direktori Caches kapan saja saat ruang disk tidak mencukupi. Perilaku ini tidak dapat dikonfigurasi — iOS memutuskan sendiri kapan dan file cache mana yang akan dihapus. Oleh karena itu, cache tidak boleh berisi data yang tidak dapat dipulihkan dari jaringan atau sumber lain.

Dampak pada memori flash: penulisan yang sering ke Disk Cache mempercepat keausan memori flash. iOS menggunakan TRIM dan wear leveling untuk meminimalkan keausan, tetapi pengembang disarankan untuk menghindari penulisan berlebihan: jangan perbarui cache lebih dari sekali setiap 5 menit untuk file yang sama; kelompokkan penulisan kecil menjadi satu; gunakan NSCache untuk data sementara yang tidak perlu disimpan di disk.

Praktik terbaik caching di iOS

Cache dua tingkat — arsitektur standar untuk aplikasi iOS: memori (NSCache) untuk data yang sering diakses dan disk (URLCache atau kustom) untuk data yang harus dipertahankan antar sesi. Masa hidup di memori — menit, di disk — jam atau hari.

Caching gambar: gunakan pustaka khusus (Kingfisher, SDWebImage, Nuke) yang mengimplementasikan cache dua tingkat dengan invalidasi otomatis, manajemen memori, dan penulisan asinkron ke disk. Implementasi cache gambar sendiri memerlukan pertimbangan decoding, ruang warna, dan penskalaan.

Cache dan keamanan: jangan cache data rahasia (kata sandi, token, data pribadi) di disk tanpa enkripsi. URLCache secara default tidak mengenkripsi data — gunakan NSFileProtection atau enkripsi tingkat aplikasi untuk konten sensitif. Untuk permintaan jaringan dengan otorisasi, gunakan kebijakan .reloadIgnoringLocalCacheData.

Pemantauan cache: pantau hit ratio, ukuran cache saat ini, dan jumlah penulisan per menit. Jika hit ratio turun di bawah 30% — cache tidak efisien dan memerlukan peninjauan strategi atau peningkatan ukuran. Menurut Point-Free (2024), pemantauan cache adalah salah satu praktik optimasi kinerja aplikasi iOS yang paling diremehkan.

Pertanyaan yang sering diajukan

Apa itu Disk Cache di iOS?

Disk Cache — teknologi penyimpanan data di disk perangkat untuk mempercepat akses berulang. Di iOS, URLCache bawaan menyimpan cache respons HTTP, dan pengembang dapat membuat cache kustom melalui direktori Caches.

Apa perbedaan Disk Cache dengan RAM Cache?

RAM Cache (NSCache) menyimpan data di memori RAM — lebih cepat, tetapi hilang saat aplikasi dimulai ulang. Disk Cache lebih lambat, tetapi bertahan antar sesi. Strategi optimal menggunakan kedua tingkat: memori untuk data panas, disk untuk data dingin.

Bisakah iOS menghapus cache saya?

Ya, sistem dapat menghapus konten direktori Caches kapan saja saat ruang tidak mencukupi. Oleh karena itu, jangan pernah menyimpan data yang tidak dapat dipulihkan di cache. Untuk dokumen pengguna, gunakan direktori Documents.

Bagaimana cara memilih ukuran cache yang tepat?

Ukuran cache tergantung pada jenis data: untuk gambar 100–500 MB, untuk respons API 10–50 MB, untuk video hingga 1 GB. Pantau hit ratio — jika turun di bawah 50%, tingkatkan ukuran cache atau ubah strategi invalidasi.

Bagaimana cara membersihkan cache di aplikasi iOS?

URLCache.removeAllCachedResponses() membersihkan cache bawaan. Untuk cache kustom, hapus file dari direktori Caches melalui FileManager. Selalu berikan pengguna kemampuan untuk membersihkan cache di pengaturan aplikasi.

Ringkasan

  • Disk Cache — penyimpanan sementara data di disk untuk mempercepat akses berulang dan mengurangi lalu lintas
  • URLCache — mekanisme Foundation bawaan untuk caching permintaan HTTP dengan dukungan Cache-Control
  • Caches directory — direktori Sandbox untuk data sementara, dibersihkan oleh sistem saat ruang tidak mencukupi
  • Invalidasi cache dilakukan melalui TTL, peristiwa, versi, atau LRU — pilihan tergantung pada jenis data
  • Hit ratio — metrik kunci efisiensi cache: 70%+ untuk gambar, 40–60% untuk API
  • Cache dua tingkat (RAM + Disk) — arsitektur standar untuk aplikasi iOS
  • Keamanan — data rahasia tidak boleh di-cache di disk tanpa enkripsi

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