Direktori cache aplikasi — apa itu, tujuan dan cara membersihkan dalam pengembangan mobile

Penulis: IT Sectr Diterbitkan: 2026-03-13 Waktu membaca: 10 mnt

Direktori cache aplikasi adalah penyimpanan sementara data yang dapat dibuat ulang pada penggunaan berikutnya. Menurut Android Developers, 2026, sistem dapat menghapus file dari direktori ini saat kekurangan memori tanpa peringatan, oleh karena itu aplikasi tidak boleh mengandalkan penyimpanan cache untuk data yang sangat penting. Penggunaan direktori cache yang benar mengurangi ruang yang ditempati dan mempercepat pemuatan konten.

Poin Utama

  • Cache Directory \u2014 penyimpanan sementara file yang dapat dibuat ulang, tidak ditujukan untuk data permanen
  • Android menyediakan context.cacheDir dan context.externalCacheDir untuk menyimpan cache di memori internal dan eksternal
  • iOS menggunakan NSCachesDirectory, yang secara otomatis dikecualikan dari pencadangan iCloud
  • Sistem dapat membersihkan cache kapan saja \u2014 simpan data kritis di Internal Storage
  • Pembersihan manual cache melalui pengaturan aplikasi meningkatkan kepercayaan pengguna dan memperbaiki ulasan

Apa itu direktori cache aplikasi?

Direktori cache adalah direktori khusus di memori internal (atau eksternal) aplikasi, yang ditujukan untuk file sementara. Perbedaan utama dari Internal Storage: sistem berhak menghapus file dari cache tanpa pemberitahuan jika perangkat kekurangan ruang kosong. Oleh karena itu, aplikasi tidak boleh menyimpan satu-satunya salinan data penting pengguna di cache. Cache optimal untuk gambar yang diunduh, respons server, sumber daya yang telah dikompilasi sebelumnya, dan data lain yang dapat dipulihkan dari jarak jauh atau dibuat ulang secara terprogram.

Di Android, direktori cache terletak di jalur /data/data/<paket>/cache/ dan dapat diakses melalui context.cacheDir. Ukuran cache tidak dibatasi secara eksplisit, tetapi Google Play merekomendasikan untuk tidak melebihi 100 MB, karena aplikasi dengan cache besar mendapat ulasan negatif dari pengguna. Di iOS, direktori cache terletak di dalam kontainer Sandbox di jalur Library/Caches/ dan dapat diakses melalui NSCachesDirectory. iOS dapat menghapus file dari Caches saat memulihkan perangkat dari cadangan atau saat kekurangan ruang kritis \u2014 pengguna harus diperingatkan tentang hal ini dalam dokumentasi aplikasi.

Memahami data apa yang dapat ditempatkan dengan aman di cache dan apa yang harus disimpan di Internal Storage atau Documents adalah keterampilan utama pengembang. Penggunaan cache yang tidak tepat menyebabkan dua masalah yang berlawanan: aplikasi memakan terlalu banyak ruang (jika pengembang menyimpan di cache apa yang seharusnya ada di Documents), atau pengguna kehilangan data (jika pengembang menyimpan di cache apa yang harus disimpan secara permanen). Ikuti aturan sederhana: jika data dapat dipulihkan \u2014 cache, jika pemulihan tidak mungkin \u2014 Internal Storage atau Documents.

Tujuan dan jenis data yang di-cache

Berbagai jenis data memiliki kecepatan pembuatan ulang dan persyaratan volume yang berbeda. Memahami karakteristik ini membantu pengembang memilih dengan benar file mana yang akan ditempatkan di cache dan mana di penyimpanan permanen.

Cache gambar dan file media

Jenis data yang paling sering di-cache adalah gambar yang diunduh dari jaringan. Pustaka Glide, Picasso, dan Coil secara otomatis menyimpan gambar yang diunduh di direktori cache aplikasi. Ukuran cache gambar yang khas di aplikasi sosial berkisar antara 50 hingga 200 MB. Ukuran cache tergantung pada resolusi layar perangkat dan jumlah konten yang dilihat. Glide menggunakan caching dua tingkat: pertama memeriksa cache L1 di RAM (algoritma LRU), kemudian cache L2 di disk. Ini memastikan pemuatan cepat gambar yang dilihat kembali tanpa permintaan jaringan berulang. Mengatur ukuran maksimum cache disk melalui DiskCacheStrategy memungkinkan kontrol ruang yang ditempati: setelah melebihi batas, pustaka secara otomatis menghapus file yang paling jarang digunakan.

kotlin
val cacheDir = File(context.cacheDir, "image_cache")
val maxSize = 50 * 1024 * 1024 // 50 MB

val cache = DiskLruCache.open(cacheDir, 1, 1, maxSize)
cache.edit("key")?.let { editor ->
    editor.newOutputStream(0).use { stream ->
        // menulis data ke cache
    }
}

Cache permintaan jaringan

Respons permintaan API dapat di-cache untuk akses offline dan mengurangi beban server. OkHttp menyediakan dukungan cache bawaan melalui kelas Cache. Header respons Cache-Control dan ETag mengelola kebijakan cache: server menentukan berapa lama respons dianggap berlaku. Dengan konfigurasi yang tepat, cache permintaan jaringan dapat mengurangi waktu pemuatan data sebesar 60\u201380% pada kunjungan berulang dan menyediakan fungsionalitas dasar aplikasi tanpa koneksi internet. Ukuran cache permintaan jaringan jarang melebihi 10\u201320 MB, tetapi dengan penggunaan aktif aplikasi dapat mencapai 50 MB. Atur ukuran cache maksimum melalui konstruktor OkHttpClient.Builder dan periksa keaktualan data yang di-cache setiap kali aplikasi dimulai.

Cache basis data dan data pra-kompilasi

Basis data SQLite dapat menghasilkan file sementara selama bekerja: file WAL (Write-Ahead Log), jurnal pengembalian, dan halaman indeks. File-file ini disimpan di samping basis data utama, tetapi untuk basis data sementara (misalnya, pencarian teks lengkap atau analitik) dapat ditentukan penempatan di direktori cache. Program shader OpenGL dan Vulkan yang telah dikompilasi sebelumnya juga di-cache di direktori ini, yang mempercepat pemuatan pertama adegan grafis. Di iOS, NSCachesDirectory direkomendasikan untuk menyimpan data Core Data yang telah dikompilasi sebelumnya dan file sementara pemrosesan gambar.

Bagaimana cara kerja pembersihan cache di Android dan iOS

Pembersihan cache dapat terjadi secara otomatis (oleh sistem) atau manual (oleh pengguna atau aplikasi). Memahami perilaku sistem dalam skenario yang berbeda diperlukan untuk mencegah kehilangan data.

Pembersihan otomatis oleh sistem

Di Android, sistem memulai proses pembersihan cache ketika jumlah ruang kosong di partisi /data turun di bawah ambang kritis (biasanya 500 MB). Proses cacheflush menganalisis ukuran cache semua aplikasi yang terinstal dan menghapus file yang paling jarang digunakan, dimulai dari yang tertua. Pengguna juga dapat membersihkan cache semua aplikasi secara manual melalui pengaturan sistem: \u201ePengaturan \u2192 Penyimpanan \u2192 Cache \u2192 Bersihkan cache\u201d. Di iOS, pembersihan otomatis Caches terjadi saat memulihkan perangkat dari cadangan \u2014 iOS tidak memulihkan konten Library/Caches/. Selain itu, iOS dapat secara selektif menghapus file dari Caches ketika ruang kosong di perangkat habis, menggunakan mekanisme purgeable storage untuk data yang terisolasi.

swift
let fm = FileManager.default
let cachesURL = fm.urls(
    for: .cachesDirectory,
    in: .userDomainMask
).first!

let contents = try fm.contentsOfDirectory(
    at: cachesURL,
    includingPropertiesForKeys: nil
)
for fileURL in contents {
    try fm.removeItem(at: fileURL)
}

Pembersihan cache secara terprogram oleh aplikasi

Pengembang dapat mengimplementasikan pembersihan terprogram cache atas permintaan pengguna atau sesuai jadwal. Di Android, untuk membersihkan cache sendiri, cukup hapus semua file di context.cacheDir dan context.externalCacheDir. Di iOS, Anda dapat membersihkan konten Library/Caches/, tetapi jangan hapus direktori itu sendiri \u2014 hanya kontennya. Disarankan untuk menampilkan ukuran cache saat ini di pengaturan aplikasi dan tombol \u201eBersihkan cache\u201d dengan konfirmasi. Menurut Google Play Console, aplikasi dengan tombol pembersihan cache menerima 22% lebih sedikit keluhan tentang kekurangan ruang dibandingkan aplikasi tanpa fitur tersebut. Pembersihan cache harus aman: aplikasi harus menangani dengan benar situasi ketika file yang di-cache telah dihapus dan memuatnya kembali secara transparan pada akses berikutnya.

Perbedaan cacheDir di Android dan iOS

Meskipun memiliki tujuan yang sama, implementasi direktori cache di Android dan iOS memiliki perbedaan yang signifikan. Pengembang harus mempertimbangkannya untuk pengoperasian aplikasi yang benar di kedua platform.

KarakteristikAndroidiOS
Jalur default/data/data/<paket>/cache/Library/Caches/
API aksescontext.cacheDirNSCachesDirectory
Cache eksternalcontext.externalCacheDirTidak ada
PencadanganTidak dicadangkanTidak dicadangkan
Pembersihan sistemSaat kekurangan ruangSaat pemulihan dari cadangan dan kekurangan ruang
Visibilitas penggunaDi pengaturan aplikasiHanya saat terhubung ke komputer

Android menyediakan direktori cache eksternal terpisah melalui context.externalCacheDir \u2014 terletak di kartu SD (jika terpasang) dan tidak dihapus saat aplikasi dihapus. Ini nyaman untuk file media besar, tetapi menciptakan risiko meninggalkan sampah di kartu memori. iOS tidak memiliki konsep cache eksternal: semua file sementara disimpan di dalam kontainer Sandbox dan dihapus secara terjamin saat penghapusan aplikasi. Di Android, cache terlihat oleh pengguna di pengaturan aplikasi dan mereka dapat membersihkannya secara manual. Di iOS, pengaturan sistem tidak menampilkan ukuran cache aplikasi individu \u2014 pengguna hanya dapat membersihkan cache melalui penghapusan dan instalasi ulang aplikasi, kecuali pengembang menambahkan tombol pembersihan di antarmuka.

Perbedaan penting \u2014 perilaku saat pemulihan. Di iOS, saat memulihkan dari cadangan iTunes atau iCloud, direktori Caches tidak dipulihkan, karena iOS menganggap data yang di-cache akan dibuat ulang saat pertama kali dijalankan. Di Android, saat memulihkan dari Google Drive, hanya Internal Storage yang diarsipkan \u2014 cache tetap kosong setelah pemulihan. Dalam kedua kasus, aplikasi harus berfungsi dengan benar dengan cache kosong, tanpa menampilkan kesalahan kepada pengguna dan tanpa kehilangan fungsionalitas.

Rekomendasi pengelolaan cache

Pengelolaan cache yang terampil adalah salah satu faktor yang memengaruhi pengalaman pengguna dan peringkat aplikasi. Rekomendasi berikut akan membantu menghindari masalah umum dan meningkatkan kepuasan pengguna.

  • Tetapkan batas ukuran cache. Gunakan DiskLruCache atau pustaka serupa dengan menentukan volume maksimum dalam megabita. Setelah melebihi batas, pustaka secara otomatis menghapus file yang paling jarang digunakan
  • Implementasikan tombol pembersihan cache di pengaturan aplikasi. Tampilkan ukuran cache saat ini (dengan format \u201e12.5 MB\u201d) dan minta konfirmasi sebelum membersihkan. Setelah pembersihan, perbarui ukuran yang ditampilkan
  • Jangan simpan di cache file yang tidak dapat dipulihkan. Jika data penting untuk pengoperasian aplikasi, simpan di Internal Storage (Android) atau Documents (iOS), dan di cache tempatkan hanya salinan untuk akses cepat
  • Periksa ketersediaan cache eksternal sebelum menulis. Di Android, context.externalCacheDir dapat mengembalikan null jika kartu SD tidak terpasang atau tidak tersedia. Selalu sediakan fallback ke cache internal
  • Gunakan kebijakan kedaluwarsa (TTL) untuk data yang di-cache. Jangan simpan file lebih lama dari yang diperlukan: untuk gambar \u2014 24\u201348 jam, untuk respons API \u2014 dari 5 menit hingga 1 jam tergantung pada frekuensi pembaruan data

Secara teratur pantau ukuran cache di analitik aplikasi. Integrasikan pengiriman metrik ukuran cache ke Firebase Analytics atau sistem serupa. Jika ukuran cache rata-rata melebihi 100 MB, optimalkan strategi caching: kurangi TTL untuk data yang jarang digunakan, terapkan kompresi gambar sebelum caching (WebP sebagai pengganti PNG, penurunan kualitas JPEG ke 85%), gunakan paginasi untuk memuat konten dari server. Ingat bahwa pengguna dengan perangkat 16\u201332 GB sangat sensitif terhadap ukuran aplikasi: ketika cache mencapai 200 MB, banyak pengguna mulai mencari cara untuk membersihkan atau menghapus aplikasi. Menurut survei Google, 38% pengguna telah menghapus setidaknya satu aplikasi karena pertumbuhan cache yang tidak terkendali dan ruang yang ditempati.

Pertanyaan Umum

Apakah saya akan kehilangan data jika membersihkan cache aplikasi?

Tidak, membersihkan cache hanya menghapus file sementara (gambar yang disimpan, respons server). Data pengguna (kata sandi, pengaturan, basis data) disimpan di Internal Storage dan tidak terpengaruh saat membersihkan cache.

Berapa ukuran cache maksimum yang direkomendasikan untuk aplikasi seluler?

Google Play merekomendasikan untuk tidak melebihi 100 MB. Untuk aplikasi dengan konten media intensif (jejaring sosial, messenger) diperbolehkan hingga 200 MB dengan syarat implementasi pembersihan otomatis dan pengaturan batas melalui cache diskret.

Apakah iOS secara otomatis membersihkan cache aplikasi?

Ya, iOS dapat menghapus file dari Library/Caches saat kekurangan ruang atau pemulihan dari cadangan. Sistem menggunakan mekanisme purgeable storage untuk pembersihan otomatis data yang tidak kritis.

Apa perbedaan antara cacheDir dan externalCacheDir di Android?

cacheDir berada di memori internal perangkat dan dihapus saat aplikasi dihapus. externalCacheDir terletak di kartu SD dan dapat tetap ada setelah penghapusan \u2014 perlu dibersihkan secara manual melalui kode pada saat pertama kali dijalankan setelah instalasi ulang.

Bagaimana pustaka pemuatan gambar mengelola cache?

Pustaka seperti Glide, Picasso, dan Coil menggunakan caching dua tingkat: L1 \u2014 RAM (cache LRU untuk akses instan), L2 \u2014 disk (direktori cache aplikasi). Cache disk memiliki batas ukuran yang dapat dikonfigurasi dan kebijakan penghapusan file lama.

Ringkasan

  • Cache Directory \u2014 penyimpanan sementara untuk data yang dapat dibuat ulang, sistem dapat membersihkannya tanpa peringatan saat kekurangan ruang
  • Android menyediakan cacheDir (memori internal) dan externalCacheDir (kartu SD) \u2014 kedua direktori tidak dicadangkan dan dapat dibersihkan oleh sistem
  • iOS menggunakan Library/Caches, secara otomatis dikecualikan dari pencadangan iCloud dan iTunes
  • Jenis data yang di-cache \u2014 gambar (L2 pustaka), respons API (OkHttp Cache), sumber daya pra-kompilasi (shader, basis data sementara)
  • Batas ukuran cache \u2014 tidak lebih dari 100\u2013200 MB dengan pembersihan otomatis file lama melalui DiskLruCache atau mekanisme serupa
  • Tombol pembersihan cache di pengaturan aplikasi mengurangi jumlah ulasan negatif dan meningkatkan kepercayaan pengguna
  • Data kritis jangan pernah disimpan di cache \u2014 gunakan Internal Storage (Android) atau Documents Directory (iOS) untuk penyimpanan permanen

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