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
context.cacheDir va context.externalCacheDir ni taqdim etadiNSCachesDirectory dan foydalanadiKesh 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.
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.
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.
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
}
}
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.
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.
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.
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.
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)
}
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.
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.
| Xarakteristika | Android | iOS |
|---|---|---|
| Standart yo\u2018l | /data/data/<paket>/cache/ | Library/Caches/ |
| Kirish API | context.cacheDir | NSCachesDirectory |
| Tashqi kesh | context.externalCacheDir | Yo\u2018q |
| Zaxira nusxasi | Arxivlashtirilmaydi | Arxivlashtirilmaydi |
| Tizim tozalashi | Joy yetishmasa | Zaxira nusxasidan tiklashda va joy yetishmasa |
| Foydalanuvchiga ko\u2018rinishi | Ilova sozlamalarida | Faqat 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 mohirona boshqarish ilovaning foydalanuvchi tajribasi va reytingiga ta\u2019sir qiluvchi omillardan biridir. Quyidagi tavsiyalar odatiy muammolardan qochish va foydalanuvchilar qoniqishini oshirishga yordam beradi.
context.externalCacheDir SD karta o\u2018rnatilmagan yoki mavjud bo\u2018lmasa null qaytarishi mumkin. Har doim ichki keshga zaxira variantni ko\u2018zda tutingMuntazam 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
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.
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.
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.
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.
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
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.