Caches Directory — iOS ilovasining sandboxidagi vaqtinchalik ma'lumotlarni saqlash uchun mo'ljallangan katalogdir. Apple File System Basics (2024) ma'lumotlariga ko'ra, tizim diskda joy bo'shatish uchun istalgan vaqtda Caches Directory dan fayllarni o'chirishi mumkin — ilova bu fayllarning yo'qligini to'g'ri boshqarishi va kerak bo'lganda ularni tiklay olishi kerak. Documents Directory dan farqli o'laroq, Caches dan olingan ma'lumotlar iCloud va iTunes zaxira nusxasiga kiritilmaydi, bu foydalanuvchining bulutli saqlash yukini kamaytiradi.
Asosiy fikrlar
Caches Directory — iOS ilovasi sandbox ichidagi, kerak bo'lganda tiklanishi mumkin bo'lgan ma'lumotlarni saqlash uchun optimallashtirilgan katalog. Documents Directory dan farqli o'laroq, Caches foydalanuvchi ma'lumotlari uchun mo'ljallanmagan — bu ilova ishini tezlashtirish uchun vaqtinchalik saqlashdir.
iOS Caches Directory dan keshlangan tarmoq javoblarini, oldindan yuklangan rasmlarni, seriyalashtirilgan obyektlarni va ilova tiklashi mumkin bo'lgan ma'lumotlarni joylashtirish uchun foydalanadi. Dasturchi bu katalogda ma'lumotlarning uzoq muddatli saqlanishiga ishonmasligi kerak.
Apple WWDC 2020 ma'lumotlariga ko'ra, iOS ilovalarining taxminan 40% keshlangan rasmlar va tarmoq ma'lumotlarini saqlash uchun Caches Directory dan foydalanadi, 25% dasturchilar esa bu kataloglar orasidagi farqni tushunmaganligi sababli Caches da Documents yoki Application Support da bo'lishi kerak bo'lgan ma'lumotlarni noto'g'ri joylashtiradi.
Caches ning muhim xususiyati: ilova tizim tomonidan kesh fayli o'chirilgan vaziyatni to'g'ri boshqarishi kerak. Kesh o'chirilgandan keyin ilova funksionalligi buzilsa — bu ma'lumotlar noto'g'ri katalogda saqlanayotganini anglatadi.
Swift da Caches Directory ga yo'l .cachesDirectory ko'rsatilgan holda FileManager ning standart metodi orqali olinadi. Bu tarmoq ma'lumotlari bilan ishlaydigan deyarli har bir iOS ilovasida qo'llaniladigan oddiy amaldir.
import Foundation
let fileManager = FileManager.default
guard let cachesURL = fileManager.urls(
for: .cachesDirectory,
in: .userDomainMask
).first else { return }
// Keshlangan JSON ni saqlash
let cacheFile = cachesURL.appendingPathComponent("feed_cache.json")
let jsonData = try JSONSerialization.data(
withJSONObject: response,
options: [.prettyPrinted]
)
try jsonData.write(to: cacheFile)
Objective-C NSSearchPathForDirectoriesInDomains dan NSCachesDirectory bilan foydalanadi. Apple Swift API ni tavsiya qilsa ham, Caches Directory bilan Objective-C kodi ishlaydigan va qo'llab-quvvatlanadigan bo'lib qoladi.
@import Foundation;
NSArray *paths = NSSearchPathForDirectoriesInDomains(
NSCachesDirectory,
NSUserDomainMask,
YES
);
NSString *cachesPath = paths.firstObject;
NSString *cacheFile = [cachesPath stringByAppendingPathComponent:@"feed_cache.plist"];
Swift loyihalari URL-ga asoslangan API ni afzal ko'rishi kerak: u tip xavfsiz va SwiftUI va Combine kabi zamonaviy freymvorklar bilan yaxshiroq integratsiyalanadi.
Caches Directory ilova ishini tezlashtirish uchun foydalanadigan bir necha turdagi ma'lumotlar uchun optimaldir, lekin yagona haqiqat manbai emas. Keshlash uchun to'g'ri ma'lumot tanlash bevosita UX va ilova samaradorligiga ta'sir qiladi.
JSON javoblari API dan, yangiliklar lentalari ma'lumotlari, obyekt ro'yxatlari — ilova serverdan qayta yuklashi mumkin bo'lgan hamma narsa. HTTP javoblarini avtomatik keshlash uchun URLCache dan foydalaning yoki seriyalashtirilgan obyektlarni qo'lda saqlang.
Rasmlar tarmoqdan yuklangan — Caches Directory dan foydalanishning eng keng tarqalgan holati. SDWebImage va Kingfisher kabi kutubxonalar sukut bo'yicha keshlangan rasmlarni aynan Caches da saqlaydi.
| Ma'lumot turi | Caches uchun mos | Saqlash muddati |
|---|---|---|
| JSON API javoblari | Ha | Tizim tozalashigacha |
| Rasmlar tarmoqdan | Ha | Tizim tozalashigacha |
| Debug jurnallari | Shartli | Yaxshisi tmp da |
| O'yin saqlashlari | Yo'q | Faqat Documents |
| Konfiguratsiyalar ilova | Yo'q | Application Support |
Agar ma'lumotlarni tiklab bo'lmasa — ularning joyi Caches emas. Bu eng oddiy mezon: tasavvur qiling, ertaga tizim Caches dan barcha fayllarni o'chiradi. Agar ilova to'g'ri ishlashda davom etsa — ma'lumotlar to'g'ri saqlanmoqda.
iOS Caches Directory ni tozalashni avtomatik boshqaradi, ammo aniq triggerlar va algoritmlar Apple tomonidan hujjatlashtirilmagan. Ma'lumki, tizim diskda joy yetishmasa, shuningdek Offload Unused Apps funksiyasi ishlaganda Caches dan fayllarni o'chirishi mumkin.
Tozalash jarayoni ilova uchun shaffof: tizim xabardor qilmasdan fayllarni o'chiradi. Ilova o'qishdan oldin fayl mavjudligini tekshirishi va yo'q bo'lsa uni qayta yaratishi kerak. Uzoq muddatli saqlashga ishonmaslik — Caches bilan ishlashda asosiy talabdir.
Apple ning "File System Basics" (2024) maqolasiga ko'ra, ilova Caches Directory dagi fayllar seanslar orasida mavjud bo'lishiga ishonmasligi kerak. Dasturchilarga fallback mexanizmini amalga oshirish tavsiya etiladi: keshlangan fayl yo'q bo'lganda — ma'lumotlarni tarmoqdan yuklab, yana Caches da saqlang.
Alohida ssenariy — ilovani tushirish (Offload). Bu funksiya faollashtirilganda iOS ilovani o'chiradi, lekin uning Documents Directory sini saqlaydi. Caches Directory esa o'chiriladi. Ilovani tiklagan foydalanuvchi keshlangan ma'lumotlarni olmaydi — ilova ularni qayta yuklashi kerak.
Caches va Temporary (tmp) kataloglari orasidagi farq ko'pincha dasturchilar orasida chalkashlikka sabab bo'ladi. Ikkala katalog ham vaqtinchalik ma'lumotlarni saqlaydi, lekin turli xil hayot davomiyligi va maqsad bilan.
| Xususiyat | Caches Directory | Temporary Directory |
|---|---|---|
| Hayot davomiyligi | Seansdan seansga (kafolatlanmagan) | Faqat seans doirasida |
| Tizim tozalashi | Joy yetishmasa | Seans tugaganda yoki qayta ishga tushirishda |
| Maqsad | Ishni tezlashtirish uchun kesh | Juda vaqtinchalik ma'lumotlar |
| Misol | Keshlangan rasmlar | Eksportdan oldin vaqtinchalik fayl |
| Zaxira nusxasi | Yo'q | Yo'q |
Caches ni tanlang, agar ma'lumotlarni ilova ishga tushirishlar orasida saqlash foydali bo'lsa, lekin ularni tiklash mumkin. tmp dan foydalaning, agar ma'lumotlar faqat joriy seansda kerak bo'lsa va ilova tugagandan keyin qiymati bo'lmasa.
Caches Directory bilan ishlash ma'lumot yo'qotilishi, ilovaning kutilmagan xatti-harakati va samaradorlik muammolarini oldini olishga yordam beradigan bir nechta qoidalarga rioya qilishni talab qiladi.
FileManager.fileExists(atPath:) Caches dan har bir o'qishdan oldin chaqirilishi kerak. Fayl yo'q bo'lsa — ma'lumotlarni asl manbadan yuklab, keshda saqlang. Hech qachon Caches dan fayl mavjud deb o'ylamang.
Belgilang ilovada Caches Directory ning maksimal hajmini. Masalan, rasmlar uchun 50 MB va JSON javoblari uchun 10 MB limit. Limit oshib ketganda o'zgartirish sanasiga ko'ra eng eski fayllarni o'chiring.
import Foundation
func trimCache(to maxSizeBytes: Int) {
let cachesURL = FileManager.default
.urls(for: .cachesDirectory, in: .userDomainMask)
.first!
guard let enumerator = FileManager.default
.enumerator(
at: cachesURL,
includingPropertiesForKeys: [.fileSizeKey, .contentModificationDateKey]
)
else { return }
// Eski fayllarni sanab va o'chirish
// hajm chegarasidan oshib ketganda
}
Ushbu amaliyotlarga rioya qilish ilovaning tizimning kesh tozalash harakatlarida to'g'ri ishlashini va foydalanuvchi kutilmagan ma'lumot yo'qotilishiga duch kelmasligini kafolatlaydi.
Tez-tez so'raladigan savollar
Yo'q, iOS Caches dan fayllarni o'chirishdan oldin bildirishnoma yubormaydi. Tozalash jarayoni ilova uchun butunlay shaffofdir. O'chirilganligini bilishning yagona usuli — faylni o'qishga urinayotganda FileManager nil qaytaradi yoki xato beradi va ilova bu vaziyatni boshqarishi kerak.
Caches Directory ga Files yoki iTunes orqali to'g'ridan-to'g'ri kirish foydalanuvchida yo'q. Biroq, foydalanuvchi Sozlamalar > Umumiy > Xotira bo'limi orqali ma'lum bir ilovani tanlab va "Ilovani tushirish" tugmasini bosib barcha ilovalar keshini tozalashi mumkin. iOS shuningdek joy yetishmasa keshni avtomatik tozalashi mumkin.
URLCache — Foundation dan HTTP so'rovlarini keshlashning o'rnatilgan mexanizmi. U avtomatik ravishda keshlangan javoblarni saqlaydi va yuklaydi, tagida Caches Directory dan foydalanadi. Qo'lda saqlash ko'proq nazorat beradi: formatni tanlash, ma'lumotlarni shifrlash va har bir faylning hayot davomiyligini individual boshqarish mumkin.
App Store orqali ilova yangilanishi vaqtida Caches Directory saqlanadi. Biroq, yangi yangilanish o'rnatish uchun ko'proq joy talab qilsa, mazmun tizim tomonidan o'chirilishi mumkin. Dasturchi yangilanishdan keyin Caches ning saqlanishiga ishonmasligi kerak — bu fallback mexanizmini amalga oshirish uchun qo'shimcha sababdir.
Muayyan NSURLSession sessiyasi uchun URLCache ni nil qilib qo'ying yoki .reloadIgnoringLocalCacheData keshlash siyosatidan foydalaning. Shuningdek bo'sh kesh bilan URLSessionConfiguration konfiguratsiyasini yaratishingiz mumkin: sessionConfiguration.urlCache = nil. Bu har doim dolzarb bo'lishi kerak bo'lgan ma'lumotlar uchun foydali.
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.