Caches Directory: bu nədir, keşin idarə edilməsi və məlumatların təmizlənməsi

Müəllif: IT Sectr Dərc olunub: 2026-07-10 Oxuma vaxtı: 10 dəq

Caches Directory — iOS tətbiqinin sandbox-unda müvəqqəti məlumatların saxlanması üçün nəzərdə tutulmuş kataloqdur. Apple File System Basics (2024) məlumatına görə, sistem diskdə yer boşaltmaq üçün istənilən vaxt Caches Directory-dən faylları silə bilər — tətbiq bu faylların olmamasını düzgün idarə etməli və lazım olduqda onları bərpa etməlidir. Documents Directory-dən fərqli olaraq, Caches-dən olan məlumatlar iCloud və iTunes ehtiyat nüsxəsinə daxil edilmir, bu da istifadəçinin bulud yaddaşına yükü azaldır.

Əsas məqamlar

  • Caches Directory — şəbəkədən bərpa edilə bilən və ya yenidən yaradıla bilən məlumatlar üçün müvəqqəti yaddaş.
  • iOS sistemi cihazda yer çatışmazlığı olduqda istənilən vaxt Caches-dən faylları silə bilər.
  • Caches-dən məlumatlar iCloud və iTunes ehtiyat nüsxəsinə daxil edilmir.
  • Kataloqun yolu NSCachesDirectory və ya FileManager.urls(for: .cachesDirectory) vasitəsilə əldə edilir.
  • Documents-dan əsas fərq: Caches itkisi kritik olan istifadəçi məlumatları üçün nəzərdə tutulmayıb.

iOS-da Caches Directory nədir?

Caches Directory — iOS tətbiqinin sandbox-u daxilində, lazım olduqda bərpa edilə bilən məlumatların saxlanması üçün optimallaşdırılmış kataloq. Documents Directory-dən fərqli olaraq, Caches istifadəçi məlumatları üçün nəzərdə tutulmayıb — bu tətbiqin işini sürətləndirmək üçün müvəqqəti yaddaşdır.

iOS Caches Directory-dən keşlənmiş şəbəkə cavablarının, əvvəlcədən yüklənmiş şəkillərin, seriyalaşdırılmış obyektlərin və tətbiqin bərpa edə biləcəyi məlumatların yerləşdirilməsi üçün istifadə edir. Tərtibatçı bu kataloqda məlumatların uzunmüddətli saxlanmasına etibar etməməlidir.

Apple WWDC 2020 məlumatına görə, iOS tətbiqlərinin təxminən 40%-i keşlənmiş şəkillərin və şəbəkə məlumatlarının saxlanması üçün Caches Directory-dən istifadə edir, 25% tərtibatçı isə bu kataloqlar arasındakı fərqləri anlamadığı üçün Caches-də Documents və ya Application Support-da yerləşməli olan məlumatları səhv yerləşdirir.

Caches-in kritik xüsusiyyəti: tətbiq sistemi tərəfindən keş faylının silindiyi vəziyyəti düzgün idarə etməlidir. Keş silindikdən sonra tətbiqin funksionallığı pozulursa — bu, məlumatların səhv kataloqda saxlandığını göstərir.

Caches Directory-yə yolu necə əldə etmək olar

Swift-də Caches Directory-yə yol .cachesDirectory göstərilməklə FileManager-ın standart metodu ilə əldə edilir. Bu, şəbəkə məlumatları ilə işləyən demək olar hər iOS tətbiqində istifadə olunan sadə bir əməliyyatdır.

swift
import Foundation

let fileManager = FileManager.default
guard let cachesURL = fileManager.urls(
    for: .cachesDirectory,
    in: .userDomainMask
).first else { return }

// Keşlənmiş JSON-u saxla
let cacheFile = cachesURL.appendingPathComponent("feed_cache.json")
let jsonData = try JSONSerialization.data(
    withJSONObject: response,
    options: [.prettyPrinted]
)
try jsonData.write(to: cacheFile)

Objective-C NSSearchPathForDirectoriesInDomains ilə NSCachesDirectory istifadə edir. Apple Swift API-ni tövsiyə etsə də, Caches Directory ilə Objective-C kodu işlək və dəstəklənən olaraq qalır.

objective-c
@import Foundation;

NSArray *paths = NSSearchPathForDirectoriesInDomains(
    NSCachesDirectory,
    NSUserDomainMask,
    YES
);
NSString *cachesPath = paths.firstObject;
NSString *cacheFile = [cachesPath stringByAppendingPathComponent:@"feed_cache.plist"];

Swift layihələri URL-based API-ə üstünlük verməlidir: bu tip təhlükəsizdir və SwiftUICombine kimi müasir freymvorklarla daha yaxşı inteqrasiya olunur.

Caches-də hansı məlumatları saxlamaq olar

Caches Directory tətbiqin işini sürətləndirmək üçün istifadə etdiyi bir neçə kateqoriya məlumat üçün optimaldır, lakin yeganə həqiqət mənbəyi deyil. Keşləmə üçün düzgün məlumat seçimi birbaşa UX və tətbiq performansına təsir edir.

Keşlənmiş şəbəkə cavabları

JSON cavabları API-dən, xəbər lentləri məlumatları, obyekt siyahıları — tətbiqin serverdən yenidən yükləyə biləcəyi hər şey. HTTP cavablarının avtomatik keşlənməsi üçün URLCache istifadə edin və ya seriyalaşdırılmış obyektləri əl ilə saxlayın.

Şəkillər və media faylları

Şəkillər şəbəkədən yüklənmiş — Caches Directory-nin ən çox istifadə halı. SDWebImage və Kingfisher kimi kitabxanalar standart olaraq keşlənmiş şəkilləri məhz Caches-də saxlayır.

Məlumat növüCaches üçün uyğundurSaxlanma müddəti
JSON API cavablarıBəliSistem təmizliyinə qədər
Şəkillər şəbəkədənBəliSistem təmizliyinə qədər
Debug jurnallarıŞərtiDaha yaxşı tmp-də
Oyun yaddaşlarıXeyrYalnız Documents
Konfiqurasiyalar tətbiqXeyrApplication Support

Məlumatlar bərpa edilə bilmirsə — onların yeri Caches deyil. Bu ən sadə meyardır: təsəvvür edin ki, sabah sistem Caches-dən bütün faylları siləcək. Tətbiq düzgün işləməyə davam edərsə — məlumatlar düzgün saxlanılır.

Sistem keş təmizləməsini necə idarə edir

iOS Caches Directory-nin təmizlənməsini avtomatik idarə edir, lakin dəqiq triggerlər və alqoritmlər Apple tərəfindən sənədləşdirilməyib. Məlumdur ki, sistem diskdə yer çatışmazlığı zamanı, həmçinin Offload Unused Apps funksiyası işləyərkən Caches-dən faylları silə bilər.

Təmizləmə prosesi tətbiq üçün şəffafdır: sistem xəbərdarlıq etmədən faylları silir. Tətbiq oxumadan əvvəl faylın mövcudluğunu yoxlamalı və olmadıqda onu yenidən yaratmalıdır. Uzunmüddətli saxlamaya etibar etməmək Caches ilə işdə əsas tələbdir.

Apple-ın "File System Basics" (2024) məqaləsinə görə, tətbiq Caches Directory-dəki faylların seanslar arasında əlçatan olacağına güvənməməlidir. Tərtibatçılara fallback mexanizmi tətbiq etmək tövsiyə olunur: keşlənmiş fayl olmadıqda — məlumatları şəbəkədən yükləyin və yenidən Caches-də saxlayın.

Ayrıca ssenari — tətbiqin boşaldılması (Offload). Bu funksiya aktivləşdirildikdə iOS tətbiqi silir, lakin onun Documents Directory-ni saxlayır. Caches Directory isə silinir. Tətbiqi bərpa edən istifadəçi keşlənmiş məlumatları əldə etməyəcək — tətbiq onları yenidən yükləməlidir.

Caches Directory vs Temporary Directory

CachesTemporary (tmp) kataloqları arasındakı fərq çox vaxt tərtibatçılar arasında qarışıqlığa səbəb olur. Hər iki kataloq müvəqqəti məlumatları saxlayır, lakin fərqli ömür müddəti zəmanətləri və təyinatla.

XüsusiyyətCaches DirectoryTemporary Directory
Ömür müddətiSeansdan seansa (zəmanət verilmir)Yalnız seans çərçivəsində
Sistem təmizləməsiYer çatışmazlığındaSeans bitdikdə və ya yenidən başlatmada
Təyinatİşi sürətləndirmək üçün keşÇox müvəqqəti məlumatlar
NümunəKeşlənmiş şəkillərİxracdan əvvəl müvəqqəti fayl
Ehtiyat nüsxəXeyrXeyr

Caches seçin, əgər məlumatları tətbiq işə salındıqdan sonra saxlamaq faydalıdırsa, lakin onları bərpa etmək olar. tmp istifadə edin, əgər məlumatlar yalnız cari seans daxilində lazımdırsa və tətbiq başa çatdıqdan sonra dəyəri yoxdur.

Caches ilə işin ən yaxşı təcrübələri

Caches Directory ilə iş məlumat itkisi, tətbiqin gözlənilməz davranışı və performans problemlərindən qaçmağa kömək edən bir neçə qaydaya riayət etməyi tələb edir.

Həmişə oxumadan əvvəl faylın mövcudluğunu yoxlayın

FileManager.fileExists(atPath:) Caches-dən hər oxumaqdan əvvəl çağırılmalıdır. Fayl yoxdursa — məlumatları orijinal mənbədən yükləyin və keşdə saxlayın. Heç vaxt Caches-dən faylın mövcud olduğunu güman etməyin.

Keşin ölçüsünü məhdudlaşdırın

Təyin edin tətbiqdə Caches Directory-nin maksimum ölçüsünü. Məsələn, şəkillər üçün 50 MB və JSON cavabları üçün 10 MB limit. Limit aşıldıqda dəyişmə tarixinə görə ən köhnə faylları silin.

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

    // Köhnə faylları siyahıya al və sil
    // ölçü limiti aşıldıqda
}

Bu təcrübələrə riayət etmək tətbiqin sistemin keş təmizləmə hərəkətləri zamanı düzgün işləməsinə və istifadəçinin gözlənilməz məlumat itkisi ilə qarşılaşmamasına zəmanət verir.

Tez-tez verilən suallar

Sistem Caches Directory-ni təmizləməzdən əvvəl tətbiqə xəbərdarlıq edirmi?

Xeyr, iOS Caches-dən faylları silməzdən əvvəl bildiriş göndərmir. Təmizləmə prosesi tətbiq üçün tamamilə şəffafdır. Silinmə haqqında öyrənməyin yeganə yolu faylı oxumağa cəhd etdikdə FileManager nil qaytarır və ya xəta atır və tətbiq bu vəziyyəti idarə etməlidir.

İstifadəçi Caches Directory-ni əl ilə təmizləyə bilərmi?

Caches Directory-yə Files və ya iTunes vasitəsilə birbaşa giriş istifadəçidə yoxdur. Bununla belə, istifadəçi Parametrlər > Ümumi > Yaddaş bölməsindən konkret tətbiqi seçib "Yükü qaldır" düyməsini sıxmaqla bütün tətbiqlərin keşini təmizləyə bilər. iOS həmçinin yer çatışmazlığı zamanı keşi avtomatik təmizləyə bilər.

URLCache əl ilə Caches Directory-də saxlamaqdan nə ilə fərqlənir?

URLCache — Foundation-dan HTTP sorğularının keşlənməsi üçün daxili mexanizmdir. O, avtomatik olaraq keşlənmiş cavabları saxlayır və yükləyir, altlıqda Caches Directory istifadə edir. Əl ilə saxlama daha çox nəzarət verir: format seçmək, məlumatları şifrələmək və hər faylın ömür müddətini fərdi idarə etmək olar.

Tətbiq yeniləməsi zamanı Caches Directory ilə nə baş verir?

App Store vasitəsilə tətbiq yenilənməsi zamanı Caches Directory saxlanılır. Lakin yeni yeniləmə quraşdırma üçün daha çox yer tələb edərsə, məzmun sistem tərəfindən silinə bilər. Tərtibatçı yeniləmədən sonra Caches-in qorunmasına etibar etməməlidir — bu fallback mexanizminin tətbiqi üçün əlavə səbəbdir.

NSURLSession üçün avtomatik keşləməni necə söndürmək olar?

Konkret NSURLSession sessiyası üçün URLCache null təyin edin və ya .reloadIgnoringLocalCacheData keşləmə siyasətindən istifadə edin. Həmçinin boş keşlə URLSessionConfiguration konfiqurasiyası yarada bilərsiniz: sessionConfiguration.urlCache = null. Bu, həmişə aktual olmalı məlumatlar üçün faydalıdır.

Nəticə

  • Caches Directory — şəbəkədən bərpa edilə bilən və ya yenidən yaradıla bilən məlumatlar üçün müvəqqəti yaddaş.
  • iOS sistemi tətbiqə xəbərdarlıq etmədən istənilən vaxt Caches-dən faylları silə bilər.
  • Caches-dən məlumatlar iCloud və iTunes ehtiyat nüsxələrinə daxil edilmir, bu da yerə qənaət edir.
  • Kataloq yolu — Swift-də FileManager.urls(for: .cachesDirectory) və ya Objective-C-də NSSearchPathForDirectoriesInDomains.
  • Caches-də keşlənmiş şəkillər, JSON API cavabları və digər bərpa edilə bilən məlumatlar saxlanılır.
  • tmp-dən fərqli olaraq, Caches məlumatları işə salmalar arasında saxlaya bilər, lakin zəmanətsiz.
  • Həmişə Caches-dən oxumadan əvvəl faylın mövcudluğunu yoxlayın və fallback yükləmə tətbiq edin.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun