Disk Cache: یہ کیا ہے، iOS ڈسک کیش اور آپریٹنگ اصول

مصنف: IT Sectr اشاعت: 2026-07-11 مطالعے کا وقت: 7 منٹ

Disk Cache ڈیوائس کی ڈسک پر ڈیٹا کو عارضی طور پر ذخیرہ کرنے کا ایک طریقہ کار ہے، جو iOS ایپلیکیشنز کو پہلے سے لوڈ کردہ وسائل تک بار بار رسائی کو تیز کرنے کی اجازت دیتا ہے۔ Apple Developer Documentation, 2024 کے مطابق، Disk Cache نیٹ ورک کے استعمال کو کم کرتا ہے، بیٹری کے بوجھ کو کم کرتا ہے اور آف لائن موڈ میں ایپلیکیشن کے آپریشن کو قابل بناتا ہے۔ iOS کئی بلٹ ان کیشنگ میکانزم فراہم کرتا ہے: نیٹ ورک کی درخواستوں کے لیے URLCache، RAM کے لیے NSCache اور Caches ڈائریکٹری کے ذریعے کسٹم نفاذ۔

اہم نکات

  • Disk Cache — بار بار رسائی کو تیز کرنے اور ٹریفک کم کرنے کے لیے ڈسک پر ڈیٹا ذخیرہ کرنا
  • URLCache — iOS میں HTTP درخواستوں کے لیے بلٹ ان کیشنگ میکانزم
  • Caches ڈائریکٹری — ایپ کے عارضی ڈیٹا کے لیے ایک مخصوص Sandbox ڈائریکٹری
  • کیش کو باطل کرنا ڈیٹا کی تازگی کے لیے اہم ہے — وقت پر مبنی، واقعہ پر مبنی اور ورژن پر مبنی حکمت عملی
  • سسٹم کیش صاف کر سکتا ہے جب ڈسک کی جگہ کم ہو — کیش میں ناقابل تبدیل ڈیٹا نہیں ہونا چاہیے

iOS میں Disk Cache کیا ہے؟

Disk Cache ایک ٹیکنالوجی ہے جو ڈیوائس کے مستقل اسٹوریج (فلیش میموری) پر ڈیٹا کو عارضی طور پر ذخیرہ کرتی ہے تاکہ اسی ڈیٹا کے بعد کی درخواستوں کو تیز کیا جا سکے۔ RAM کیش کے برعکس، Disk Cache ایپ اور یہاں تک کہ ڈیوائس کے ری اسٹارٹ کے بعد بھی ڈیٹا کو برقرار رکھتا ہے۔

iOS دو اہم کیشنگ لیول فراہم کرتا ہے: غیر مستحکم (NSCache، میموری) اور ڈسک پر مبنی (URLCache، فائل سسٹم)۔ ڈسک کیش غیر مستحکم کیش سے 10–100 گنا سست ہے لیکن نیٹ ورک کی درخواست سے نمایاں طور پر تیز ہے — فرق 2 سے 3 آرڈرز آف میگنیٹیوڈ کا ہو سکتا ہے۔ بہترین حکمت عملی دو سطحی کیش استعمال کرتی ہے: گرم ڈیٹا کے لیے میموری اور سرد ڈیٹا کے لیے ڈسک۔

Apple Performance Optimization Guide, 2023 کے مطابق، ایک مناسب طریقے سے ترتیب دیا گیا Disk Cache بار بار دیکھنے کے لیے مواد لوڈنگ کے وقت کو 60–80% تک کم کرتا ہے اور ٹریفک کی کھپت کو 40–70% تک کم کرتا ہے۔ میڈیا سے بھرپور ایپلیکیشنز (تصاویر، ویڈیو، آڈیو) کے لیے، کیشنگ ایک اہم UX عنصر ہے۔

URLCache: بلٹ ان کیشنگ میکانزم

URLCache ایک بلٹ ان Foundation کلاس ہے جو URLSession کی درخواستوں کے لیے ایک مشترکہ کیش لاگو کرتی ہے۔ یہ Cache-Control، Expires اور ETag جیسے HTTP ہیڈرز کی بنیاد پر کیش سائز اور باطل کرنے کی پالیسیوں کا انتظام کرتے ہوئے خود بخود سرور کے جوابات کو ڈسک اور میموری میں محفوظ کرتی ہے۔

swift
import Foundation

let cache = URLCache(
    memoryCapacity: 50 * 1024 * 1024,
    diskCapacity: 200 * 1024 * 1024,
    diskPath: "network-cache"
)

URLCache.shared = cache

let config = URLSessionConfiguration.default
config.urlCache = cache
config.requestCachePolicy = .returnCacheDataElseLoad

let session = URLSession(configuration: config)

URLCache کیشنگ پالیسیاں اس بات کا تعین کرتی ہیں کہ کیش شدہ ڈیٹا کب استعمال کرنا ہے اور کب نیا درخواست کرنا ہے۔ اہم پالیسیوں میں شامل ہیں: useProtocolCachePolicy (سرور ہیڈرز کی بنیاد پر)، reloadIgnoringLocalCacheData (ہمیشہ سرور سے)، returnCacheDataElseLoad (پہلے کیش)، returnCacheDataDontLoad (صرف کیش — آف لائن موڈ)۔

Cache-Control ایک HTTP ہیڈر ہے جو سرور جواب کے ساتھ بھیجتا ہے، max-age (سیکنڈ میں زندگی کا دورانیہ)، must-revalidate (تازگی کی جانچ کریں)، no-cache (تصدیق کے بغیر استعمال نہ کریں) اور no-store (کیش نہ کریں) کی وضاحت کرتا ہے۔ iOS useProtocolCachePolicy پالیسی کے ساتھ URLCache استعمال کرتے وقت خود بخود ان ہیڈرز کی سختی سے پیروی کرتا ہے۔

کسٹم کیشنگ حکمت عملی اور باطل کرنا

کسٹم کیشنگ اس وقت ضروری ہے جب بلٹ ان URLCache ناکافی ہو — پروسیس شدہ تصاویر، سیریلائزڈ ڈیٹا ماڈلز یا حسابات کے نتائج کو ذخیرہ کرنے کے لیے۔ ایسے معاملات میں، ڈویلپرز ایپلیکیشن کے Sandbox میں Caches ڈائریکٹری کی بنیاد پر اپنا کیشنگ سسٹم بناتے ہیں۔

swift
class DiskCache<T: Codable> {
    private let cacheDir: URL
    private let encoder = JSONEncoder()
    private let decoder = JSONDecoder()

    init() {
        let paths = FileManager.default
            .urls(for: .cachesDirectory,
                     in: .userDomainMask)
        cacheDir = paths[0].appendingPathComponent(
            "data-cache", isDirectory: true
        )
        try? FileManager.default
            .createDirectory(at: cacheDir,
                             withIntermediateDirectories: true)
    }

    func set(value: T, for key: String) {
        let url = cacheDir.appendingPathComponent(
            SHA256.hash(key)
        )
        if let data = try? encoder.encode(value) {
            try? data.write(to: url)
        }
    }

    func get(for key: String) -> T? {
        let url = cacheDir.appendingPathComponent(
            SHA256.hash(key)
        )
        guard let data = try? Data(contentsOf: url) else { return nil }
        return try? decoder.decode(T.self, from: data)
    }

    func clearAll() {
        try? FileManager.default
            .removeItem(at: cacheDir)
    }
}

کیش کو باطل کرنے کی حکمت عملی اس بات کا تعین کرتی ہے کہ ذخیرہ شدہ ڈیٹا کب پرانا سمجھا جاتا ہے: TTL (Time-To-Live) — ڈیٹا لکھنے کے بعد ایک مقررہ وقت تک زندہ رہتا ہے؛ واقعہ پر مبنی — کسی واقعہ کی بنیاد پر باطل کرنا (مثال کے طور پر، سرور پر ڈیٹا اپ ڈیٹ)؛ ورژن پر مبنی — API ورژن یا ڈیٹا فارمیٹ تبدیل ہونے پر باطل کرنا؛ LRU (Least Recently Used) — سائز کی حد سے تجاوز کرنے پر سب سے کم استعمال شدہ اندراجات کو خودکار طور پر ہٹانا۔

عملی اصول: TTL ان خبروں اور مواد کے لیے موزوں ہے جو پیش قیاسی طور پر پرانے ہو جاتے ہیں۔ واقعہ پر مبنی پش نوٹیفیکیشنز کے ذریعے سرور کے زیر انتظام ڈیٹا کے لیے۔ ورژن پر مبنی کنفیگریشنز اور ڈیٹا ماڈل کیشز کے لیے۔ LRU محدود ڈسک اسپیس والی میڈیا فائلوں کے لیے ایک عالمگیر انتخاب ہے۔

کیش کی کارکردگی اور حدود

Disk Cache کی کارکردگی ہٹ ریشیو (hit ratio) سے ماپا جاتا ہے — نیٹ ورک کال کے بغیر کیش سے پوری کی گئی درخواستوں کا فیصد۔ ایک اچھی طرح ترتیب دی گئی تصویری کیش کے لیے عام ہٹ ریشیو 70–90%، API جوابات کے لیے 40–60%، اسٹریمنگ ویڈیو کے لیے 30–50% ہے۔

ڈیٹا کی قسمعام ہٹ ریشیوتجویز کردہ کیش سائز
تصاویر70–90%100–500 MB
API JSON جوابات40–60%10–50 MB
ویڈیو/آڈیو30–50%500 MB — 1 GB
فونٹس اور وسائل90–99%5–20 MB
ویب مواد50–70%50–200 MB

iOS میں Disk Cache کی حدود: سسٹم ڈسک کی جگہ کم ہونے پر کسی بھی وقت Caches ڈائریکٹری کے مواد کو حذف کر سکتا ہے۔ یہ رویہ ترتیب دینے کے قابل نہیں ہے — iOS فیصلہ کرتا ہے کہ کیش فائلوں کو کب اور کون سی حذف کرنی ہے۔ لہذا، کیش میں وہ ڈیٹا نہیں ہونا چاہیے جو نیٹ ورک یا دیگر ذرائع سے بازیافت نہ کیا جا سکے۔

فلیش میموری پر اثر: Disk Cache میں بار بار لکھنا فلیش اسٹوریج کے ٹوٹ پھوٹ کو تیز کرتا ہے۔ iOS ٹوٹ پھوٹ کو کم سے کم کرنے کے لیے TRIM اور wear leveling کا استعمال کرتا ہے، لیکن ڈویلپرز کو ضرورت سے زیادہ لکھنے سے بچنے کا مشورہ دیا جاتا ہے: ایک ہی فائل کے لیے کیش کو ہر 5 منٹ میں ایک بار سے زیادہ اپ ڈیٹ نہ کریں؛ چھوٹی تحریروں کو ایک ساتھ جمع کریں؛ ان عارضی ڈیٹا کے لیے NSCache استعمال کریں جنہیں ڈسک پر محفوظ کرنے کی ضرورت نہیں ہے۔

iOS میں کیشنگ کے بہترین طریقے

دو سطحی کیش iOS ایپلیکیشنز کے لیے معیاری فن تعمیر ہے: بار بار رسائی والے ڈیٹا کے لیے میموری (NSCache) اور سیشنز کے درمیان برقرار رہنے والے ڈیٹا کے لیے ڈسک (URLCache یا کسٹم)۔ میموری میں زندگی کا دورانیہ — منٹ، ڈسک پر — گھنٹے یا دن۔

تصویری کیشنگ: خصوصی لائبریریاں (Kingfisher, SDWebImage, Nuke) استعمال کریں جو خودکار باطل کرنے، میموری مینجمنٹ اور غیر متزامن ڈسک رائٹنگ کے ساتھ دو سطحی کیش لاگو کرتی ہیں۔ کسٹم امیج کیش کو لاگو کرنے کے لیے ڈی کوڈنگ، کلر اسپیس اور اسکیلنگ پر غور کرنے کی ضرورت ہوتی ہے۔

کیش اور سیکیورٹی: حساس ڈیٹا (پاس ورڈز، ٹوکنز، ذاتی ڈیٹا) کو انکرپشن کے بغیر ڈسک پر کیش نہ کریں۔ URLCache ڈیفالٹ کے طور پر ڈیٹا کو انکرپٹ نہیں کرتا — حساس مواد کے لیے NSFileProtection یا ایپلیکیشن لیول انکرپشن استعمال کریں۔ اختیار یافتہ نیٹ ورک کی درخواستوں کے لیے .reloadIgnoringLocalCacheData پالیسی استعمال کریں۔

کیش مانیٹرنگ: ہٹ ریشیو، موجودہ کیش سائز اور فی منٹ لکھنے کی تعداد کو ٹریک کریں۔ اگر ہٹ ریشیو 30% سے نیچے گر جائے تو کیش غیر موثر ہے اور حکمت عملی پر نظرثانی یا سائز میں اضافے کی ضرورت ہے۔ Point-Free (2024) کے مطابق، کیش مانیٹرنگ iOS ایپلیکیشن پرفارمنس آپٹیمائزیشن کے سب سے کم درستہ دیے گئے طریقوں میں سے ایک ہے۔

اکثر پوچھے گئے سوالات

iOS میں Disk Cache کیا ہے؟

Disk Cache ایک ٹیکنالوجی ہے جو بار بار رسائی کو تیز کرنے کے لیے ڈیوائس کی ڈسک پر ڈیٹا ذخیرہ کرتی ہے۔ iOS کا بلٹ ان URLCache HTTP جوابات کو کیش کرتا ہے اور ڈویلپرز Caches ڈائریکٹری کے ذریعے کسٹم کیشز بنا سکتے ہیں۔

Disk Cache RAM Cache سے کیسے مختلف ہے؟

RAM Cache (NSCache) ڈیٹا کو RAM میں ذخیرہ کرتا ہے — تیز تر، لیکن ایپ ری اسٹارٹ پر ختم ہو جاتا ہے۔ Disk Cache سست ہے لیکن سیشنز کے درمیان برقرار رہتا ہے۔ بہترین حکمت عملی دونوں سطحوں کو استعمال کرتی ہے: گرم ڈیٹا کے لیے میموری، سرد ڈیٹا کے لیے ڈسک۔

کیا iOS میرا کیش حذف کر سکتا ہے؟

ہاں، سسٹم ڈسک کی جگہ کم ہونے پر کسی بھی وقت Caches ڈائریکٹری کے مواد کو حذف کر سکتا ہے۔ لہذا، کیش میں کبھی بھی ناقابل بازیافت ڈیٹا ذخیرہ نہ کریں۔ صارف کے دستاویزات کے لیے Documents ڈائریکٹری استعمال کریں۔

صحیح کیش سائز کیسے منتخب کریں؟

کیش سائز ڈیٹا کی قسم پر منحصر ہے: تصاویر کے لیے 100–500 MB، API جوابات کے لیے 10–50 MB، ویڈیو کے لیے 1 GB تک۔ ہٹ ریشیو کی نگرانی کریں — اگر یہ 50% سے نیچے گر جائے تو کیش سائز بڑھائیں یا باطل کرنے کی حکمت عملی تبدیل کریں۔

iOS ایپ میں کیش کیسے صاف کریں؟

URLCache.removeAllCachedResponses() بلٹ ان کیش صاف کرتا ہے۔ کسٹم کیش کے لیے، FileManager کے ذریعے Caches ڈائریکٹری سے فائلیں حذف کریں۔ صارفین کو ہمیشہ ایپ سیٹنگز کے ذریعے کیش صاف کرنے کا اختیار فراہم کریں۔

خلاصہ

  • Disk Cache — تیز بار بار رسائی اور کم ٹریفک کے لیے ڈسک پر عارضی ڈیٹا ذخیرہ کرنا
  • URLCache — Cache-Control سپورٹ کے ساتھ بلٹ ان Foundation HTTP درخواست کیشنگ
  • Caches ڈائریکٹری — عارضی ڈیٹا کے لیے Sandbox ڈائریکٹری، جگہ کم ہونے پر سسٹم کے ذریعے صاف کی جاتی ہے
  • باطل کرنا TTL، واقعہ، ورژن یا LRU کے ذریعے کیا جاتا ہے — انتخاب ڈیٹا کی قسم پر منحصر ہے
  • ہٹ ریشیو — اہم کیش کارکردگی کا میٹرک: تصاویر کے لیے 70%+، API کے لیے 40–60%
  • دو سطحی کیش (RAM + ڈسک) — iOS ایپلیکیشنز کے لیے معیاری فن تعمیر
  • سیکیورٹی — حساس ڈیٹا کو انکرپشن کے بغیر ڈسک پر کیش نہیں کرنا چاہیے

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں