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
context.cacheDir dan context.externalCacheDir untuk menyimpan cache di memori internal dan eksternalNSCachesDirectory, yang secara otomatis dikecualikan dari pencadangan iCloudDirektori 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.
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.
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.
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
}
}
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.
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.
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.
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.
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)
}
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.
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.
| Karakteristik | Android | iOS |
|---|---|---|
| Jalur default | /data/data/<paket>/cache/ | Library/Caches/ |
| API akses | context.cacheDir | NSCachesDirectory |
| Cache eksternal | context.externalCacheDir | Tidak ada |
| Pencadangan | Tidak dicadangkan | Tidak dicadangkan |
| Pembersihan sistem | Saat kekurangan ruang | Saat pemulihan dari cadangan dan kekurangan ruang |
| Visibilitas pengguna | Di pengaturan aplikasi | Hanya 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.
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.
context.externalCacheDir dapat mengembalikan null jika kartu SD tidak terpasang atau tidak tersedia. Selalu sediakan fallback ke cache internalSecara 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
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.
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.
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.
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.
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
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.
Baca juga