Ilova kesh direktoriyasi — bu nima, vazifasi va mobil ishlanmada qanday tozalash

Muallif: IT Sectr Nashr etilgan: 2026-03-13 O'qish vaqti: 10 daq

Ilova kesh direktoriyasi \u2014 bu navbatdagi foydalanishda qayta yaratilishi mumkin bo\u2018lgan ma\u2019lumotlarning vaqtinchalik saqlash joyidir. Android Developers, 2026 ma\u2019lumotlariga ko\u2018ra, tizim xotira yetishmasa ogohlantirishsiz ushbu direktoriyadan fayllarni o\u2018chirishi mumkin, shuning uchun ilova muhim ma\u2019lumotlar uchun keshning saqlanishiga ishonmasligi kerak. Kesh direktoriyasidan to\u2018g\u2018ri foydalanish band qilingan joyni kamaytiradi va kontent yuklanishini tezlashtiradi.

Asosiy

  • Cache Directory \u2014 qayta yaratilishi mumkin bo\u2018lgan fayllarning vaqtinchalik saqlash joyi, doimiy ma\u2019lumotlar uchun mo\u2018ljallanmagan
  • Android ichki va tashqi xotirada keshni saqlash uchun context.cacheDir va context.externalCacheDir ni taqdim etadi
  • iOS iCloud zaxira nusxasidan avtomatik ravishda chiqarib tashlanadigan NSCachesDirectory dan foydalanadi
  • Tizim istalgan vaqtda keshni tozalashi mumkin \u2014 muhim ma\u2019lumotlarni Internal Storage da saqlang
  • Qo\u2018lda tozalash ilova sozlamalari orqali foydalanuvchilarning ishonchini oshiradi va sharhlarni yaxshilaydi

Ilova kesh direktoriyasi nima?

Kesh direktoriyasi \u2014 bu ilovaning ichki (yoki tashqi) xotirasida vaqtinchalik fayllar uchun mo\u2018ljallangan maxsus direktoriya. Internal Storage dan asosiy farqi: qurilmada bo\u2018sh joy yetishmasa, tizim ogohlantirishsiz kesh fayllarini o\u2018chirish huquqiga ega. Shuning uchun ilova hech qachon keshda foydalanuvchining muhim ma\u2019lumotlarining yagona nusxasini saqlamasligi kerak. Kesh yuklab olingan rasmlar, server javoblari, oldindan kompilyatsiya qilingan resurslar va masofadan tiklanadigan yoki dasturiy ravishda qayta yaratilishi mumkin bo\u2018lgan boshqa ma\u2019lumotlar uchun maqbuldir.

Android da kesh direktoriyasi /data/data/<paket>/cache/ yo\u2018lida joylashgan va context.cacheDir orqali mavjud. Kesh hajmi aniq cheklanmagan, ammo Google Play 100 MB dan oshmaslikni tavsiya qiladi, chunki katta keshga ega ilovalar foydalanuvchilardan salbiy sharhlar oladi. iOS da kesh direktoriyasi Sandbox konteyneri ichida Library/Caches/ yo\u2018lida joylashgan va NSCachesDirectory orqali mavjud. iOS qurilmani zaxira nusxasidan tiklashda yoki joy keskin yetishmaganda Caches dan fayllarni o\u2018chirishi mumkin \u2014 bu haqda ilova hujjatlarida foydalanuvchilarni ogohlantirish kerak.

Qaysi ma\u2019lumotlarni keshda, qaysilarini Internal Storage yoki Documents da saqlashni tushunish dasturchining asosiy mahoratidir. Keshdan noto\u2018g\u2018ri foydalanish ikkita qarama-qarshi muammoga olib keladi: yoki ilova juda ko\u2018p joy egallaydi (agar dasturchi keshda Documents da bo\u2018lishi kerak bo\u2018lgan narsani saqlasa), yoki foydalanuvchi ma\u2019lumotlarni yo\u2018qotadi (agar dasturchi keshda doimiy saqlanishi kerak bo\u2018lgan narsani saqlasa). Oddiy qoidaga amal qiling: agar ma\u2019lumotlar tiklanishi mumkin bo\u2018lsa \u2014 kesh, agar tiklash imkonsiz bo\u2018lsa \u2014 Internal Storage yoki Documents.

Keshlashtiriladigan ma\u2019lumotlarning maqsadi va turlari

Har xil turdagi ma\u2019lumotlar tiklanish tezligi va hajm talablarida farqlanadi. Bu xususiyatlarni tushunish dasturchiga qaysi fayllarni keshda va qaysilarini doimiy xotirada saqlashni to\u2018g\u2018ri tanlashga yordam beradi.

Rasmlar va media fayllar keshi

Keshlashtiriladigan eng keng tarqalgan ma\u2019lumot turi bu tarmoqdan yuklab olingan rasmlardir. Glide, Picasso va Coil kutubxonalari yuklab olingan rasmlarni avtomatik ravishda ilova kesh direktoriyasida saqlaydi. Ijtimoiy ilovalarda rasm keshining odatiy hajmi 50 dan 200 MB gacha. Kesh hajmi qurilma ekranining o\u2018lchamiga va ko\u2018rilgan kontent miqdoriga bog\u2018liq. Glide ikki darajali keshlashtirishdan foydalanadi: avval operativ xotirada L1 keshni (LRU algoritmi), so\u2018ngra diskda L2 keshni tekshiradi. Bu tarmoqqa qayta so\u2018rov yubormasdan qayta ko\u2018rilgan rasmlarni tez yuklashni ta\u2019minlaydi. Disk keshi maksimal hajmini DiskCacheStrategy orqali sozlash band qilingan joyni nazorat qilish imkonini beradi: limit oshib ketganda, kutubxona avtomatik ravishda eng kam ishlatilgan fayllarni o\u2018chiradi.

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 ->
        // ma'lumotlarni keshga yozish
    }
}

Tarmoq so\u2018rovlari keshi

API so\u2018rovlarining javoblarini oflayn kirish va server yukini kamaytirish uchun keshlashtirish mumkin. OkHttp Cache klassi orqali o\u2018rnatilgan keshlashtirishni qo\u2018llab-quvvatlaydi. Cache-Control va ETag javob sarlavhalari keshlashtirish siyosatini boshqaradi: server javob qancha vaqt davomida dolzarb deb hisoblanishini belgilaydi. To\u2018g\u2018ri sozlash bilan tarmoq so\u2018rovlari keshi takroriy tashriflarda ma\u2019lumotlarni yuklash vaqtini 60\u201380% qisqartirishi va internet aloqasisiz ilovaning asosiy funksionalligini ta\u2019minlashi mumkin. Tarmoq so\u2018rovlari keshi hajmi kamdan-kam 10\u201320 MB dan oshadi, ammo faol foydalanishda 50 MB ga yetishi mumkin. OkHttpClient.Builder konstruktori orqali keshning maksimal hajmini sozlang va ilova har safar ishga tushganda keshlashtirilgan ma\u2019lumotlarning dolzarbligini tekshiring.

Ma\u2019lumotlar bazasi va oldindan kompilyatsiya qilingan ma\u2019lumotlar keshi

SQLite ma\u2019lumotlar bazalari ish vaqtida vaqtinchalik fayllar yaratishi mumkin: WAL fayllari (Write-Ahead Log), qaytarish jurnallari va indeks sahifalari. Bu fayllar asosiy ma\u2019lumotlar bazasi yonida saqlanadi, ammo vaqtinchalik ma\u2019lumotlar bazalari (masalan, to\u2018liq matnli qidiruv yoki analitika) uchun kesh direktoriyasida joylashishni belgilash mumkin. Oldindan kompilyatsiya qilingan OpenGL va Vulkan shader dasturlari ham ushbu direktoriyada keshlashtiriladi, bu grafik sahnalarni birinchi yuklashni tezlashtiradi. iOS da NSCachesDirectory oldindan kompilyatsiya qilingan Core Data ma\u2019lumotlari va tasvirni qayta ishlashning vaqtinchalik fayllarini saqlash uchun tavsiya etiladi.

Android va iOS da keshni tozalash qanday ishlaydi

Keshni tozalash avtomatik (tizim tomonidan) yoki qo\u2018lda (foydalanuvchi yoki ilova tomonidan) amalga oshirilishi mumkin. Turli stsenariylarda tizimning xatti-harakatini tushunish ma\u2019lumotlar yo\u2018qolishining oldini olish uchun zarurdir.

Tizim tomonidan avtomatik tozalash

Android da tizim /data bo\u2018limidagi bo\u2018sh joy miqdori kritik chegaradan (odatda 500 MB) pastga tushganda keshni tozalash jarayonini ishga tushiradi. cacheflush jarayoni barcha o\u2018rnatilgan ilovalarning kesh hajmini tahlil qiladi va eng kam ishlatilgan fayllarni, eng eskilaridan boshlab, o\u2018chiradi. Foydalanuvchi tizim sozlamalari orqali barcha ilovalar keshlarini qo\u2018lda tozalashi mumkin: \u201eSozlamalar \u2192 Xotira \u2192 Kesh \u2192 Keshni tozalash\u201d. iOS da Caches ni avtomatik tozalash qurilmani zaxira nusxasidan tiklashda sodir bo\u2018ladi \u2014 iOS Library/Caches/ mazmunini tiklamaydi. Bundan tashqari, iOS qurilmada bo\u2018sh joy tugaganda Caches dan fayllarni tanlab o\u2018chirishi mumkin, izolyatsiya qilingan ma\u2019lumotlar uchun purgeable storage mexanizmidan foydalanadi.

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

Ilova tomonidan dasturiy tozalash

Dasturchi foydalanuvchining so\u2018roviga binoan yoki jadval asosida keshni dasturiy tozalashni amalga oshirishi mumkin. Android da o\u2018z keshingizni tozalash uchun context.cacheDir va context.externalCacheDir dagi barcha fayllarni o\u2018chirish kifoya. iOS da Library/Caches/ mazmunini tozalash mumkin, ammo direktoriyaning o\u2018zini emas \u2014 faqat uning mazmunini. Ilova sozlamalarida foydalanuvchiga joriy kesh hajmini va \u201eKeshni tozalash\u201d tugmasini tasdiqlash bilan ko\u2018rsatish tavsiya etiladi. Google Play Console ma\u2019lumotlariga ko\u2018ra, keshni tozalash tugmasi bo\u2018lgan ilovalar bunday funksiyasiz ilovalarga nisbatan 22% kamroq joy yetishmasligi haqida shikoyat oladi. Keshni tozalash xavfsiz bo\u2018lishi kerak: ilova keshlashtirilgan fayllar o\u2018chirilgan vaziyatni to\u2018g\u2018ri boshqarishi va keyingi murojaatda ularni shaffof tarzda qayta yuklashi kerak.

Android va iOS dagi cacheDir farqlari

Bir xil maqsadga qaramasdan, Android va iOS da kesh direktoriyalarining amalga oshirilishi sezilarli farqlarga ega. Dasturchi ikkala platformada ilovaning to\u2018g\u2018ri ishlashi uchun ularni hisobga olishi kerak.

XarakteristikaAndroidiOS
Standart yo\u2018l/data/data/<paket>/cache/Library/Caches/
Kirish APIcontext.cacheDirNSCachesDirectory
Tashqi keshcontext.externalCacheDirYo\u2018q
Zaxira nusxasiArxivlashtirilmaydiArxivlashtirilmaydi
Tizim tozalashiJoy yetishmasaZaxira nusxasidan tiklashda va joy yetishmasa
Foydalanuvchiga ko\u2018rinishiIlova sozlamalaridaFaqat kompyuterga ulanganda

Android context.externalCacheDir orqali alohida tashqi kesh direktoriyasini taqdim etadi \u2014 u SD kartada (agar o\u2018rnatilgan bo\u2018lsa) joylashgan va ilova o\u2018chirilganda o\u2018chirilmaydi. Bu katta media fayllar uchun qulay, ammo xotira kartasida axlat qoldirish xavfini tug\u2018diradi. iOS tashqi kesh tushunchasiga ega emas: barcha vaqtinchalik fayllar Sandbox konteyneri ichida saqlanadi va o\u2018chirishda kafolatlangan holda o\u2018chiriladi. Android da kesh foydalanuvchiga ilova sozlamalarida ko\u2018rinadi va u uni qo\u2018lda tozalashi mumkin. iOS da tizim sozlamalari alohida ilovalarning kesh hajmini ko\u2018rsatmaydi \u2014 foydalanuvchi keshni faqat ilovani o\u2018chirib qayta o\u2018rnatish orqali tozalashi mumkin, agar dasturchi interfeysga tozalash tugmasini qo\u2018shmagan bo\u2018lsa.

Muhim farq \u2014 tiklashdagi xatti-harakat. iOS da iTunes yoki iCloud zaxira nusxasidan tiklashda Caches direktoriyasi tiklanmaydi, chunki iOS keshlashtirilgan ma\u2019lumotlar birinchi ishga tushirishda qayta yaratiladi deb hisoblaydi. Android da Google Drive dan tiklashda faqat Internal Storage arxivlashtiriladi \u2014 kesh tiklashdan keyin bo\u2018sh qoladi. Ikkala holatda ham ilova bo\u2018sh kesh bilan to\u2018g\u2018ri ishlashi, foydalanuvchiga xatolarni ko\u2018rsatmasligi va funksionallikni yo\u2018qotmasligi kerak.

Keshni boshqarish bo\u2018yicha tavsiyalar

Keshni mohirona boshqarish ilovaning foydalanuvchi tajribasi va reytingiga ta\u2019sir qiluvchi omillardan biridir. Quyidagi tavsiyalar odatiy muammolardan qochish va foydalanuvchilar qoniqishini oshirishga yordam beradi.

  • Kesh hajmi chegarasini belgilang. DiskLruCache yoki shu kabi kutubxonalardan maksimal hajmni megabaytlarda ko\u2018rsatib foydalaning. Limit oshib ketganda, kutubxona avtomatik ravishda eng kam ishlatilgan fayllarni o\u2018chiradi
  • Ilova sozlamalarida tozalash tugmasini yarating. Joriy kesh hajmini (\u201e12.5 MB\u201d formatida) ko\u2018rsating va tozalashdan oldin tasdiqlashni so\u2018rang. Tozalashdan keyin ko\u2018rsatilgan hajmni yangilang
  • Keshda tiklab bo\u2018lmaydigan fayllarni saqlamang. Agar ma\u2019lumotlar ilova ishlashi uchun muhim bo\u2018lsa, ularni Internal Storage (Android) yoki Documents (iOS) da saqlang, keshga esa faqat tezkor kirish uchun nusxa qo\u2018ying
  • Yozishdan oldin tashqi kesh mavjudligini tekshiring. Android da context.externalCacheDir SD karta o\u2018rnatilmagan yoki mavjud bo\u2018lmasa null qaytarishi mumkin. Har doim ichki keshga zaxira variantni ko\u2018zda tuting
  • Eskirish siyosatidan (TTL) foydalaning. Fayllarni kerak bo\u2018lgandan ortiq saqlamang: rasmlar uchun 24\u201348 soat, API javoblari uchun ma\u2019lumotlarni yangilash chastotasiga qarab 5 daqiqadan 1 soatgacha

Muntazam ravishda ilova analitikasida kesh hajmini kuzatib boring. Kesh hajmi metrikasini Firebase Analytics yoki shunga o\u2018xshash tizimga yuborishni integratsiya qiling. Agar o\u2018rtacha kesh hajmi 100 MB dan oshsa, keshlashtirish strategiyasini optimallashtiring: kam ishlatiladigan ma\u2019lumotlar uchun TTL ni kamaytiring, keshlashtirishdan oldin rasm siqishni joriy qiling (PNG o\u2018rniga WebP, JPEG sifatini 85% gacha pasaytirish), serverdan kontent yuklash uchun paginatsiyadan foydalaning. Esda tutingki, 16\u201332 GB xotiraga ega qurilmalar foydalanuvchilari ilova hajmiga ayniqsa sezgir: kesh 200 MB ga yetganda, ko\u2018plab foydalanuvchilar tozalash usulini qidiradi yoki shunchaki ilovani o\u2018chiradi. Google so\u2018roviga ko\u2018ra, foydalanuvchilarning 38% nazoratsiz kesh o\u2018sishi va band qilingan joy tufayli kamida bitta ilovani o\u2018chirgan.

Tez-tez beriladigan savollar

Agar ilova keshnii tozalasam, ma\u2019lumotlarimni yo\u2018qotamanmi?

Yo\u2018q, keshni tozalash faqat vaqtinchalik fayllarni (saqlangan rasmlar, server javoblari) o\u2018chiradi. Foydalanuvchi ma\u2019lumotlari (parollar, sozlamalar, ma\u2019lumotlar bazalari) Internal Storage da saqlanadi va keshni tozalashdan ta\u2019sirlanmaydi.

Mobil ilova uchun tavsiya etiladigan maksimal kesh hajmi qancha?

Google Play 100 MB dan oshmaslikni tavsiya qiladi. Intensiv media kontentli ilovalar (ijtimoiy tarmoqlar, messenjerlar) uchun avtomatik tozalash va diskret kesh orqali limitni sozlash sharti bilan 200 MB gacha ruxsat etiladi.

iOS ilova keshnii avtomatik tozalaydimi?

Ha, iOS joy yetishmasa yoki zaxira nusxasidan tiklashda Library/Caches dan fayllarni o\u2018chirishi mumkin. Tizim muhim bo\u2018lmagan ma\u2019lumotlarni avtomatik tozalash uchun purgeable storage mexanizmidan foydalanadi.

Android da cacheDir va externalCacheDir o\u2018rtasidagi farq nima?

cacheDir qurilmaning ichki xotirasida joylashgan va ilova o\u2018chirilganda o\u2018chiriladi. externalCacheDir SD kartada joylashgan va o\u2018chirishdan keyin qolishi mumkin \u2014 uni qayta o\u2018rnatishdan keyin birinchi ishga tushirishda kod orqali qo\u2018lda tozalash kerak.

Rasm yuklash kutubxonalari keshni qanday boshqaradi?

Glide, Picasso va Coil kabi kutubxonalar ikki darajali keshlashtirishdan foydalanadi: L1 \u2014 operativ xotira (tezkor kirish uchun LRU kesh), L2 \u2014 disk (ilova kesh direktoriyasi). Disk keshi sozlanishi mumkin bo\u2018lgan hajm chegarasiga va eski fayllarni o\u2018chirish siyosatiga ega.

Xulosa

  • Cache Directory \u2014 qayta tiklanishi mumkin bo\u2018lgan ma\u2019lumotlar uchun vaqtinchalik saqlash, tizim joy yetishmasa ogohlantirishsiz tozalashi mumkin
  • Android cacheDir (ichki xotira) va externalCacheDir (SD karta) ni taqdim etadi \u2014 ikkala direktoriya arxivlanmaydi va tizim tomonidan tozalanishi mumkin
  • iOS iCloud va iTunes zaxira nusxasidan avtomatik chiqarilgan Library/Caches dan foydalanadi
  • Keshlashtiriladigan ma\u2019lumot turlari \u2014 rasmlar (kutubxonalarning L2 keshi), API javoblari (OkHttp Cache), oldindan kompilyatsiya qilingan resurslar (shaderlar, vaqtinchalik ma\u2019lumotlar bazalari)
  • Kesh hajmi chegarasi \u2014 DiskLruCache yoki shu kabi mexanizm orqali eski fayllarni avtomatik tozalash bilan 100\u2013200 MB dan oshmasligi kerak
  • Tozalash tugmasi ilova sozlamalarida salbiy sharhlar sonini kamaytiradi va foydalanuvchi ishonchini oshiradi
  • Muhim ma\u2019lumotlarni hech qachon keshda saqlamang \u2014 doimiy saqlash uchun Internal Storage (Android) yoki Documents Directory (iOS) dan foydalaning

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing