Uygulama Önbellek Dizini — Nedir, Amacı ve Mobil Geliştirmede Nasıl Temizlenir

Yazar: IT Sectr Yayınlanma: 2026-03-13 Okuma süresi: 10 dk

Uygulama önbellek dizini, bir sonraki kullanımda yeniden oluşturulabilecek geçici verilerin depolandığı alandır. Android Developers, 2026'ya göre, bellek yetersiz olduğunda sistem bu dizindeki dosyaları uyarı vermeden silebilir, bu nedenle uygulama kritik önemdeki veriler için önbelleğin korunmasına güvenmemelidir. Önbellek dizininin doğru kullanımı, kaplanan alanı azaltır ve içerik yüklemeyi hızlandırır.

Önemli Noktalar

  • Önbellek Dizini — yeniden oluşturulabilen dosyaların geçici deposu, kalıcı veriler için değildir
  • Android, dahili ve harici bellekte önbellek depolamak için context.cacheDir ve context.externalCacheDir sağlar
  • iOS, iCloud yedeklemelerinden otomatik olarak hariç tutulan NSCachesDirectory'yi kullanır
  • Sistem önbelleği her an temizleyebilir — kritik verileri Internal Storage'da saklayın
  • Manuel önbellek temizliği uygulama ayarları üzerinden kullanıcı güvenini artırır ve değerlendirmeleri iyileştirir

Uygulama Önbellek Dizini Nedir?

Önbellek dizini, geçici dosyalar için tasarlanmış, uygulamanın dahili (veya harici) belleğindeki özel bir dizindir. Internal Storage'dan temel farkı: cihazda boş alan az olduğunda sistem, bildirimde bulunmadan önbellekteki dosyaları silme hakkına sahiptir. Bu nedenle uygulama, önemli kullanıcı verilerinin tek kopyasını asla önbellekte saklamamalıdır. Önbellek, indirilen görseller, sunucu yanıtları, önceden derlenmiş kaynaklar ve uzaktan geri yüklenebilen veya programatik olarak yeniden oluşturulabilen diğer veriler için idealdir.

Android'de önbellek dizini /data/data/<package>/cache/ konumunda bulunur ve context.cacheDir ile erişilebilir. Önbellek boyutu açıkça sınırlandırılmamıştır, ancak Google Play 100 MB'ı aşmamayı önerir, çünkü büyük önbelleğe sahip uygulamalar kullanıcılardan olumsuz değerlendirmeler alır. iOS'ta önbellek dizini, Sandbox kapsayıcısı içinde Library/Caches/ konumunda bulunur ve NSCachesDirectory ile erişilebilir. iOS, cihaz bir yedekten geri yüklenirken veya kritik düzeyde alan yetersizliğinde Caches'teki dosyaları silebilir — bu konuda kullanıcılar uygulama belgelerinde bilgilendirilmelidir.

Hangi verilerin güvenle önbelleğe yerleştirilebileceğini ve hangilerinin Internal Storage veya Documents'ta saklanması gerektiğini anlamak, önemli bir geliştirici becerisidir. Yanlış önbellek kullanımı iki zıt soruna yol açar: ya uygulama çok fazla yer kaplar (geliştirici Documents'ta olması gerekeni önbellekte saklarsa) ya da kullanıcı veri kaybeder (geliştirici kalıcı olarak saklanması gerekeni önbellekte saklarsa). Basit bir kural izleyin: veriler kurtarılabiliyorsa — önbellek, kurtarma imkansızsa — Internal Storage veya Documents.

Önbelleğe Alınan Verilerin Amacı ve Türleri

Farklı veri türleri farklı yeniden oluşturma hızına ve depolama gereksinimlerine sahiptir. Bu özellikleri anlamak, geliştiricinin hangi dosyaları önbelleğe, hangilerini kalıcı depolamaya koyacağını doğru seçmesine yardımcı olur.

Görsel ve Medya Dosyası Önbelleği

En yaygın önbellek verisi türü, ağdan indirilen görsellerdir. Glide, Picasso ve Coil gibi kütüphaneler, indirilen görselleri otomatik olarak uygulamanın önbellek dizinine kaydeder. Sosyal uygulamalarda görsel önbelleğinin tipik boyutu 50 ila 200 MB arasındadır. Önbellek boyutu, cihazın ekran çözünürlüğüne ve görüntülenen içerik miktarına bağlıdır. Glide, iki seviyeli önbellekleme kullanır: önce RAM'deki L1 önbelleğini (LRU algoritması), ardından diskteki L2 önbelleğini kontrol eder. Bu, ek bir ağ isteği olmadan tekrar tekrar görüntülenen görsellerin hızlı yüklenmesini sağlar. DiskCacheStrategy ile maksimum disk önbelleği boyutunu yapılandırmak, kaplanan alanı kontrol etmeye olanak tanır: sınır aşıldığında, kütüphane otomatik olarak en az kullanılan dosyaları siler.

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 ->
        // verileri önbelleğe yazma
    }
}

Ağ İsteği Önbelleği

API isteklerinin yanıtları, çevrimdışı erişim ve sunucu yükünü azaltmak için önbelleğe alınabilir. OkHttp, Cache sınıfı aracılığıyla yerleşik önbellekleme desteği sağlar. Cache-Control ve ETag yanıt başlıkları önbellek politikasını yönetir: sunucu, yanıtın ne kadar süre geçerli kabul edileceğini belirtir. Doğru yapılandırmayla, ağ isteği önbelleği tekrarlanan ziyaretlerde veri yükleme süresini %60–80 oranında azaltabilir ve internet bağlantısı olmadan temel uygulama işlevselliği sağlayabilir. Ağ isteği önbelleğinin boyutu nadiren 10–20 MB'ı aşar, ancak yoğun kullanımda 50 MB'a ulaşabilir. OkHttpClient.Builder yapıcısı aracılığıyla maksimum önbellek boyutunu yapılandırın ve her uygulama başlatılışında önbelleğe alınan verilerin geçerliliğini kontrol edin.

Veritabanı ve Önceden Derlenmiş Veri Önbelleği

SQLite veritabanları çalışma sırasında geçici dosyalar oluşturabilir: WAL dosyaları (Write-Ahead Log), geri alma günlükleri ve dizin sayfaları. Bu dosyalar ana veritabanının yanında saklanır, ancak geçici veritabanları (örneğin, tam metin arama veya analitik) için önbellek dizininde konum belirtilebilir. Önceden derlenmiş OpenGL ve Vulkan shader programları da bu dizinde önbelleğe alınır ve grafik sahnelerinin ilk yüklenmesini hızlandırır. iOS'ta NSCachesDirectory, önceden derlenmiş Core Data ve geçici görsel işleme dosyalarının saklanması için önerilir.

Android ve iOS'ta Önbellek Temizliği Nasıl Çalışır

Önbellek temizliği otomatik (sistem tarafından) veya manuel (kullanıcı veya uygulama tarafından) gerçekleşebilir. Farklı senaryolarda sistem davranışını anlamak, veri kaybını önlemek için gereklidir.

Sistem Tarafından Otomatik Önbellek Temizliği

Android'de sistem, /data bölümündeki boş alan kritik bir eşiğin (genellikle 500 MB) altına düştüğünde önbellek temizleme işlemini başlatır. cacheflush işlemi, yüklü tüm uygulamaların önbellek boyutunu analiz eder ve en eskilerinden başlayarak en az kullanılan dosyaları siler. Kullanıcı ayrıca sistem ayarları aracılığıyla tüm uygulamaların önbelleğini manuel olarak temizleyebilir: “Ayarlar → Depolama → Önbellek → Önbelleği temizle.” iOS'ta otomatik Caches temizliği, cihaz bir yedekten geri yüklenirken gerçekleşir — iOS, Library/Caches/ içeriğini geri yüklemez. Ayrıca iOS, boş alan tükendiğinde, yalıtılmış veriler için temizlenebilir depolama mekanizmasını kullanarak Caches'teki dosyaları seçici olarak silebilir.

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)
}

Uygulama Tarafından Programatik Önbellek Temizliği

Geliştirici, kullanıcı talebi üzerine veya bir programa göre programatik önbellek temizliği uygulayabilir. Android'de, uygulamanın kendi önbelleğini temizlemek için context.cacheDir ve context.externalCacheDir içindeki tüm dosyaları silmek yeterlidir. iOS'ta Library/Caches/ içeriğini temizleyin ancak dizinin kendisini silmeyin — yalnızca içeriğini temizleyin. Uygulama ayarlarında kullanıcıya geçerli önbellek boyutunu ve onay ile birlikte “Önbelleği temizle” düğmesini göstermeniz önerilir. Google Play Console'a göre, önbellek temizleme düğmesi olan uygulamalar, bu özelliği olmayan uygulamalara kıyasla alan yetersizliğiyle ilgili %22 daha az şikayet alır. Önbellek temizliği güvenli olmalıdır: uygulama, önbelleğe alınan dosyaların silindiği durumu doğru şekilde işlemeli ve bir sonraki erişimde bunları şeffaf bir şekilde yeniden yüklemelidir.

Android ve iOS'ta cacheDir Arasındaki Farklar

Aynı amaca rağmen, Android ve iOS'ta önbellek dizinlerinin uygulanması önemli farklılıklar gösterir. Geliştiricinin, uygulamanın her iki platformda da doğru çalışması için bunları dikkate alması gerekir.

ÖzellikAndroidiOS
Varsayılan yol/data/data/<package>/cache/Library/Caches/
Erişim API'sicontext.cacheDirNSCachesDirectory
Harici önbellekcontext.externalCacheDirYok
YedeklemeYedeklenmezYedeklenmez
Sistem temizliğiAlan yetersiz olduğundaYedekten geri yüklemede ve alan yetersiz olduğunda
Kullanıcı görünürlüğüUygulama ayarlarındaYalnızca bilgisayara bağlandığında

Android, context.externalCacheDir aracılığıyla ayrı bir harici önbellek dizini sağlar — SD kartta bulunur (takılıysa) ve uygulama kaldırıldığında silinmez. Bu, büyük medya dosyaları için uygundur, ancak hafıza kartında çöp bırakma riski oluşturur. iOS'un harici önbellek kavramı yoktur: tüm geçici dosyalar Sandbox kapsayıcısı içinde saklanır ve kaldırma sırasında garantili olarak silinir. Android'de önbellek, uygulama ayarlarında kullanıcıya görünür ve kullanıcı onu manuel olarak temizleyebilir. iOS'ta sistem ayarları, bireysel uygulamaların önbellek boyutunu göstermez — geliştirici arayüze bir temizleme düğmesi eklemediği sürece kullanıcı, önbelleği yalnızca uygulamayı silip yeniden yükleyerek temizleyebilir.

Önemli bir fark — geri yükleme sırasındaki davranıştır. iOS'ta, iTunes veya iCloud yedeklemesinden geri yüklerken Caches dizini geri yüklenmez, çünkü iOS önbelleğe alınan verilerin ilk başlatmada yeniden oluşturulacağını varsayar. Android'de, Google Drive'dan geri yüklerken yalnızca Internal Storage yedeklenir — geri yüklemeden sonra önbellek boş kalır. Her iki durumda da uygulama, boş bir önbellekle doğru şekilde çalışmalı, kullanıcıya hata göstermemeli veya işlevsellik kaybetmemelidir.

Önbellek Yönetimi İçin Öneriler

Doğru önbellek yönetimi, kullanıcı deneyimini ve uygulama puanını etkileyen faktörlerden biridir. Aşağıdaki öneriler, tipik sorunları önlemeye ve kullanıcı memnuniyetini artırmaya yardımcı olacaktır.

  • Önbellek için bir boyut sınırı belirleyin. Maksimum hacmi megabayt cinsinden belirterek DiskLruCache veya benzer kütüphaneler kullanın. Sınır aşıldığında, kütüphane otomatik olarak en az kullanılan dosyaları siler
  • Uygulama ayarlarında bir önbellek temizleme düğmesi uygulayın. Geçerli önbellek boyutunu (“12,5 MB” formatında) gösterin ve temizlemeden önce onay isteyin. Temizledikten sonra görüntülenen boyutu güncelleyin
  • Önbellekte kurtarılamayan dosyaları saklamayın. Veriler uygulama çalışması için kritikse, bunları Internal Storage (Android) veya Documents (iOS)'ta saklayın ve hızlı erişim için yalnızca bir kopyasını önbelleğe koyun
  • Yazmadan önce harici önbelleğin kullanılabilirliğini kontrol edin. Android'de, SD kart takılı değilse veya kullanılamıyorsa context.externalCacheDir null döndürebilir. Her zaman dahili önbelleğe bir geri dönüş sağlayın
  • Önbelleğe alınan veriler için TTL politikası kullanın. Dosyaları gerekenden daha uzun süre saklamayın: görseller için — 24–48 saat, API yanıtları için — veri güncelleme sıklığına bağlı olarak 5 dakikadan 1 saate kadar

Uygulama analitiğinde önbellek boyutunu düzenli olarak izleyin. Firebase Analytics veya benzer bir sisteme önbellek boyutu metriği raporlamasını entegre edin. Ortalama önbellek boyutu 100 MB'ı aşarsa, önbellekleme stratejisini optimize edin: nadiren kullanılan veriler için TTL'yi azaltın, önbelleklemeden önce görsel sıkıştırma uygulayın (PNG yerine WebP, JPEG kalitesini %85'e düşürün), sunucudan içerik yüklemek için sayfalama kullanın. 16–32 GB cihazlara sahip kullanıcıların uygulama boyutuna özellikle duyarlı olduğunu unutmayın: önbellek 200 MB'a ulaştığında, birçok kullanıcı onu temizlemenin bir yolunu aramaya başlar veya uygulamayı tamamen siler. Google anketine göre, kullanıcıların %38'i kontrolsüz önbellek büyümesi ve alan tüketimi nedeniyle en az bir uygulamayı silmiştir.

Sıkça Sorulan Sorular

Uygulama önbelleğini temizlersem verilerimi kaybeder miyim?

Hayır, önbelleği temizlemek yalnızca geçici dosyaları (kaydedilmiş görseller, sunucu yanıtları) kaldırır. Kullanıcı verileri (şifreler, ayarlar, veritabanları) Internal Storage'da saklanır ve önbellek temizliğinden etkilenmez.

Mobil uygulama için önerilen maksimum önbellek boyutu nedir?

Google Play 100 MB'ı aşmamayı önerir. Yoğun medya içeriğine sahip uygulamalar (sosyal ağlar, mesajlaşma) için, otomatik temizlik uygulanması ve ayrı bir önbellek aracılığıyla sınır yapılandırılması koşuluyla 200 MB'a kadar kabul edilebilir.

iOS uygulama önbelleğini otomatik olarak temizler mi?

Evet, iOS alan yetersiz olduğunda veya bir yedekten geri yüklerken Library/Caches dosyalarını silebilir. Sistem, kritik olmayan verilerin otomatik temizliği için temizlenebilir depolama mekanizmasını kullanır.

Android'de cacheDir ve externalCacheDir arasındaki fark nedir?

cacheDir cihazın dahili belleğinde bulunur ve uygulama kaldırıldığında silinir. externalCacheDir SD kartta bulunur ve kaldırma işleminden sonra kalabilir — yeniden yüklemeden sonraki ilk başlatmada kod aracılığıyla manuel olarak temizlenmelidir.

Görsel yükleme kütüphaneleri önbelleği nasıl yönetir?

Glide, Picasso ve Coil gibi kütüphaneler iki seviyeli önbellekleme kullanır: L1 — RAM (anında erişim için LRU önbelleği), L2 — disk (uygulama önbellek dizini). Disk önbelleği, yapılandırılabilir bir boyut sınırına ve eski dosyaları kaldırma politikasına sahiptir.

Özet

  • Önbellek Dizini — yeniden oluşturulabilir veriler için geçici depolama alanı, sistem alan yetersiz olduğunda uyarısız temizleyebilir
  • Android cacheDir (dahili bellek) ve externalCacheDir (SD kart) sağlar — ikisi de yedeklenmez ve sistem tarafından temizlenebilir
  • iOS Library/Caches kullanır, iCloud ve iTunes yedeklemelerinden otomatik olarak hariç tutulur
  • Önbelleğe alınan veri türleri — görseller (kütüphane L2 önbelleği), API yanıtları (OkHttp Cache), önceden derlenmiş kaynaklar (shader'lar, geçici veritabanları)
  • Önbellek boyut sınırı — DiskLruCache veya benzer mekanizma ile eski dosyaların otomatik silinmesiyle 100–200 MB'ı geçmemeli
  • Önbellek temizleme düğmesi uygulama ayarlarında olumsuz değerlendirme sayısını azaltır ve kullanıcı güvenini artırır
  • Kritik önemdeki veriler asla önbellekte saklanmamalıdır — kalıcı depolama için Internal Storage (Android) veya Documents Directory (iOS) kullanın

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun