ایپلیکیشن کیش ڈائریکٹری ایک عارضی ڈیٹا ذخیرہ ہے جو اگلے استعمال پر دوبارہ بنایا جا سکتا ہے۔ Android Developers, 2026 کے مطابق، میموری کم ہونے پر سسٹم بغیر انتباہ کے اس ڈائریکٹری سے فائلیں حذف کر سکتا ہے، لہذا ایپلیکیشن کو اہم ڈیٹا کے لیے کیش کی حفاظت پر انحصار نہیں کرنا چاہیے۔ کیش ڈائریکٹری کا صحیح استعمال جگہ کے استعمال کو کم کرتا ہے اور مواد لوڈنگ کو تیز کرتا ہے۔
اہم نکات
context.cacheDir اور context.externalCacheDir فراہم کرتا ہےNSCachesDirectory استعمال کرتا ہے، جو خود بخود iCloud بیک اپ سے خارج کر دیا جاتا ہےکیش ڈائریکٹری ایپلیکیشن کی اندرونی (یا بیرونی) میموری میں ایک خصوصی ڈائریکٹری ہے جو عارضی فائلوں کے لیے ڈیزائن کی گئی ہے۔ Internal Storage سے بنیادی فرق: اگر ڈیوائس میں خالی جگہ کم ہو تو سسٹم کو بغیر اطلاع کے کیش سے فائلیں حذف کرنے کا حق ہے۔ لہذا، ایپلیکیشن کو کبھی بھی صارف کے اہم ڈیٹا کی واحد کاپی کیش میں نہیں رکھنی چاہیے۔ کیش ڈاؤن لوڈ کردہ تصاویر، سرور کے جوابات، پہلے سے مرتب کردہ وسائل اور کسی بھی دوسرے ڈیٹا کے لیے بہترین ہے جسے دور سے بحال یا پروگرام کے ذریعے دوبارہ بنایا جا سکتا ہے۔
Android پر، کیش ڈائریکٹری /data/data/<package>/cache/ پر واقع ہے اور context.cacheDir کے ذریعے قابل رسائی ہے۔ کیش کا سائز واضح طور پر محدود نہیں ہے، لیکن Google Play 100 MB سے تجاوز نہ کرنے کی سفارش کرتا ہے، کیونکہ بڑے کیش والی ایپس کو صارفین سے منفی جائزے ملتے ہیں۔ iOS پر، کیش ڈائریکٹری Sandbox کنٹینر کے اندر Library/Caches/ پر واقع ہے اور NSCachesDirectory کے ذریعے قابل رسائی ہے۔ iOS ڈیوائس کو بیک اپ سے بحال کرتے وقت یا جگہ کی شدید کمی پر Caches سے فائلیں حذف کر سکتا ہے — اس بارے میں صارفین کو ایپ دستاویزات میں آگاہ کیا جانا چاہیے۔
یہ سمجھنا کہ کون سا ڈیٹا محفوظ طریقے سے کیش میں رکھا جا سکتا ہے اور کون سا Internal Storage یا Documents میں ذخیرہ کیا جانا چاہیے، ایک اہم ڈویلپر مہارت ہے۔ غلط کیش استعمال دو متضاد مسائل کا سبب بنتا ہے: یا تو ایپ بہت زیادہ جگہ لیتی ہے (اگر ڈویلپر کیش میں وہ رکھتا ہے جو Documents میں ہونا چاہیے) یا صارف ڈیٹا کھو دیتا ہے (اگر ڈویلپر کیش میں وہ رکھتا ہے جسے مستقل طور پر محفوظ کیا جانا چاہیے)۔ ایک سادہ اصول پر عمل کریں: اگر ڈیٹا بحال کیا جا سکتا ہے — کیش، اگر بحالی ناممکن ہے — Internal Storage یا Documents۔
مختلف ڈیٹا کی اقسام میں دوبارہ تخلیق کی رفتار اور جگہ کی ضروریات مختلف ہوتی ہیں۔ ان خصوصیات کو سمجھنے سے ڈویلپر کو صحیح طریقے سے انتخاب کرنے میں مدد ملتی ہے کہ کون سی فائلیں کیش میں رکھنی ہیں اور کون سی مستقل ذخیرہ میں۔
سب سے عام قسم کا کیش کردہ ڈیٹا — نیٹ ورک سے ڈاؤن لوڈ کردہ تصاویر ہیں۔ Glide، Picasso اور Coil جیسی لائبریریاں ڈاؤن لوڈ کردہ تصاویر کو خود بخود ایپ کی کیش ڈائریکٹری میں محفوظ کرتی ہیں۔ سوشل ایپس میں تصویر کیش کا عام سائز 50 سے 200 MB تک ہوتا ہے۔ کیش کا سائز ڈیوائس کی اسکرین ریزولوشن اور دیکھے گئے مواد کی مقدار پر منحصر ہے۔ Glide دو سطحی کیشنگ استعمال کرتا ہے: پہلے RAM میں L1 کیش (LRU الگورتھم) چیک کرتا ہے، پھر ڈسک پر L2 کیش۔ یہ اضافی نیٹ ورک درخواست کے بغیر بار بار دیکھی جانے والی تصاویر کی تیز لوڈنگ کو یقینی بناتا ہے۔ DiskCacheStrategy کے ذریعے زیادہ سے زیادہ ڈسک کیش سائز ترتیب دینا استعمال شدہ جگہ کو کنٹرول کرنے کی اجازت دیتا ہے: حد سے تجاوز کرنے پر، لائبریری خود بخود کم سے کم استعمال شدہ فائلوں کو حذف کر دیتی ہے۔
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 ->
// کیش میں ڈیٹا لکھنا
}
}
API درخواستوں کے جوابات کو آف لائن رسائی اور سرور کے بوجھ کو کم کرنے کے لیے کیش کیا جا سکتا ہے۔ OkHttp Cache کلاس کے ذریعے بلٹ ان کیشنگ سپورٹ فراہم کرتا ہے۔ Cache-Control اور ETag رسپانس ہیڈر کیشنگ پالیسی کا انتظام کرتے ہیں: سرور بتاتا ہے کہ جواب کتنے عرصے تک درست سمجھا جاتا ہے۔ مناسب ترتیب کے ساتھ، نیٹ ورک درخواست کیش بار بار وزٹ پر ڈیٹا لوڈنگ کے وقت کو 60–80% تک کم کر سکتا ہے اور انٹرنیٹ کنکشن کے بغیر بنیادی ایپ فعالیت فراہم کر سکتا ہے۔ نیٹ ورک درخواست کیش کا سائز شاذ و نادر ہی 10–20 MB سے تجاوز کرتا ہے، لیکن بھاری استعمال پر 50 MB تک پہنچ سکتا ہے۔ OkHttpClient.Builder کنسٹرکٹر کے ذریعے زیادہ سے زیادہ کیش سائز ترتیب دیں اور ہر ایپ لانچ پر کیش کردہ ڈیٹا کی درستگی چیک کریں۔
SQLite ڈیٹابیسز آپریشن کے دوران عارضی فائلیں پیدا کر سکتے ہیں: WAL فائلیں (Write-Ahead Log)، رول بیک جرنل اور انڈیکس صفحات۔ یہ فائلیں مرکزی ڈیٹابیس کے ساتھ محفوظ ہوتی ہیں، لیکن عارضی ڈیٹابیسز (مثلاً، فل ٹیکسٹ سرچ یا تجزیہ) کے لیے کیش ڈائریکٹری میں مقام بتایا جا سکتا ہے۔ پہلے سے مرتب کردہ OpenGL اور Vulkan شیڈر پروگرام بھی اس ڈائریکٹری میں کیش کیے جاتے ہیں، جو گرافکس مناظر کی پہلی لوڈنگ کو تیز کرتا ہے۔ iOS پر، NSCachesDirectory کو پہلے سے مرتب کردہ Core Data اور عارضی تصویری پروسیسنگ فائلوں کے ذخیرہ کے لیے تجویز کیا جاتا ہے۔
کیش صفائی خود بخود (سسٹم کے ذریعے) یا دستی (صارف یا ایپ کے ذریعے) ہو سکتی ہے۔ مختلف منظرناموں میں سسٹم کے رویے کو سمجھنا ڈیٹا کے نقصان کو روکنے کے لیے ضروری ہے۔
Android پر، سسٹم کیش صفائی کا عمل اس وقت شروع کرتا ہے جب /data پارٹیشن پر خالی جگہ ایک اہم حد (عام طور پر 500 MB) سے نیچے آجاتی ہے۔ cacheflush عمل تمام انسٹال شدہ ایپس کے کیش سائز کا تجزیہ کرتا ہے اور سب سے پرانی فائلوں سے شروع کرتے ہوئے کم سے کم استعمال شدہ فائلوں کو حذف کرتا ہے۔ صارف سسٹم سیٹنگز کے ذریعے تمام ایپس کا کیش دستی طور پر بھی صاف کر سکتا ہے: “سیٹنگز → اسٹوریج → کیش → کیش صاف کریں۔” iOS پر، خودکار Caches صفائی ڈیوائس کو بیک اپ سے بحال کرتے وقت ہوتی ہے — iOS Library/Caches/ کا مواد بحال نہیں کرتا۔ مزید برآں، iOS خالی جگہ ختم ہونے پر الگ تھلگ ڈیٹا کے لیے purgeable storage میکانزم استعمال کرتے ہوئے Caches سے فائلوں کو انتخابی طور پر حذف کر سکتا ہے۔
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)
}
ڈویلپر صارف کی درخواست پر یا شیڈول کے مطابق پروگرامیٹک کیش صفائی لاگو کر سکتا ہے۔ Android پر، اپنے کیش کو صاف کرنے کے لیے context.cacheDir اور context.externalCacheDir میں موجود تمام فائلیں حذف کریں۔ iOS پر، Library/Caches/ کا مواد صاف کریں لیکن ڈائریکٹری کو خود حذف نہ کریں — صرف اس کا مواد۔ ایپ سیٹنگز میں صارف کو موجودہ کیش سائز اور تصدیق کے ساتھ “کیش صاف کریں” بٹن دکھانے کی سفارش کی جاتی ہے۔ Google Play Console کے مطابق، کیش صاف کرنے والے بٹن والی ایپس کو اس فیچر کے بغیر ایپس کے مقابلے میں جگہ کی کمی کے بارے میں 22% کم شکایات ملتی ہیں۔ کیش صفائی محفوظ ہونی چاہیے: ایپ کو اس صورت حال کو صحیح طریقے سے ہینڈل کرنا چاہیے جب کیش کردہ فائلیں حذف ہو جائیں اور اگلی رسائی پر انہیں شفاف طریقے سے دوبارہ لوڈ کرنا چاہیے۔
ایک جیسے مقصد کے باوجود، Android اور iOS پر کیش ڈائریکٹریوں کے نفاذ میں اہم فرق ہے۔ ڈویلپر کو دونوں پلیٹ فارمز پر ایپ کے صحیح آپریشن کے لیے انہیں مدنظر رکھنا ہوگا۔
| خصوصیت | Android | iOS |
|---|---|---|
| ڈیفالٹ راستہ | /data/data/<package>/cache/ | Library/Caches/ |
| رسائی API | context.cacheDir | NSCachesDirectory |
| بیرونی کیش | context.externalCacheDir | دستیاب نہیں |
| بیک اپ | بیک اپ نہیں ہوتا | بیک اپ نہیں ہوتا |
| سسٹم صفائی | جب جگہ کم ہو | بیک اپ سے بحالی پر اور جب جگہ کم ہو |
| صارف کو نمائش | ایپ سیٹنگز میں | صرف کمپیوٹر سے منسلک ہونے پر |
Android context.externalCacheDir کے ذریعے ایک علیحدہ بیرونی کیش ڈائریکٹری فراہم کرتا ہے — یہ SD کارڈ پر واقع ہے (اگر انسٹال ہو) اور ایپ ان انسٹال کرنے پر حذف نہیں ہوتا۔ یہ بڑی میڈیا فائلوں کے لیے آسان ہے، لیکن میموری کارڈ پر کچرا چھوڑنے کا خطرہ پیدا کرتا ہے۔ iOS میں بیرونی کیش کا کوئی تصور نہیں ہے: تمام عارضی فائلیں Sandbox کنٹینر کے اندر محفوظ ہوتی ہیں اور ان انسٹال کرنے پر یقینی طور پر حذف ہو جاتی ہیں۔ Android پر، کیش صارف کو ایپ سیٹنگز میں نظر آتا ہے اور وہ اسے دستی طور پر صاف کر سکتا ہے۔ iOS پر، سسٹم سیٹنگز انفرادی ایپس کا کیش سائز نہیں دکھاتیں — صارف صرف ایپ کو حذف کرکے اور دوبارہ انسٹال کرکے کیش صاف کر سکتا ہے، جب تک کہ ڈویلپر نے انٹرفیس میں صفائی کا بٹن شامل نہ کیا ہو۔
ایک اہم فرق — بحالی پر رویہ ہے۔ iOS پر، iTunes یا iCloud بیک اپ سے بحال کرتے وقت، Caches ڈائریکٹری بحال نہیں ہوتی، کیونکہ iOS فرض کرتا ہے کہ کیش کردہ ڈیٹا پہلے لانچ پر دوبارہ بنایا جائے گا۔ Android پر، Google Drive سے بحال کرتے وقت، صرف Internal Storage کا بیک اپ لیا جاتا ہے — بحالی کے بعد کیش خالی رہتا ہے۔ دونوں صورتوں میں، ایپ کو خالی کیش کے ساتھ صحیح طریقے سے کام کرنا چاہیے، صارف کو غلطیاں دکھائے بغیر یا فعالیت کھوئے بغیر۔
مناسب کیش انتظام صارف کے تجربے اور ایپ کی درجہ بندی کو متاثر کرنے والے عوامل میں سے ایک ہے۔ درج ذیل سفارشات عام مسائل سے بچنے اور صارفین کے اطمینان کو بڑھانے میں مدد کریں گی۔
context.externalCacheDir null واپس کر سکتا ہے اگر SD کارڈ انسٹال نہ ہو یا دستیاب نہ ہو۔ ہمیشہ اندرونی کیش پر فال بیک فراہم کریںایپ اینالیٹکس میں کیش سائز کی باقاعدہ نگرانی کریں۔ Firebase Analytics یا اسی طرح کے سسٹم میں کیش سائز میٹرک رپورٹنگ کو ضم کریں۔ اگر اوسط کیش سائز 100 MB سے تجاوز کرے تو کیشنگ حکمت عملی کو بہتر بنائیں: شاذ و نادر استعمال شدہ ڈیٹا کے لیے TTL کم کریں، کیش کرنے سے پہلے تصویری کمپریشن لاگو کریں (PNG کے بجائے WebP، JPEG کوالٹی 85% تک کم کریں)، سرور سے مواد لوڈ کرنے کے لیے پیجینیشن استعمال کریں۔ یاد رکھیں کہ 16–32 GB والے آلات کے صارفین ایپ کے سائز کے لیے خاص طور پر حساس ہوتے ہیں: جب کیش 200 MB تک پہنچتا ہے، تو بہت سے صارفین اسے صاف کرنے کا طریقہ تلاش کرنے لگتے ہیں یا صرف ایپ حذف کر دیتے ہیں۔ Google سروے کے مطابق، 38% صارفین نے بے قابو کیش بڑھوتری اور جگہ کے استعمال کی وجہ سے کم از کم ایک ایپ حذف کی ہے۔
اکثر پوچھے گئے سوالات
نہیں، کیش صاف کرنے سے صرف عارضی فائلیں (محفوظ کردہ تصاویر، سرور کے جوابات) ہٹتی ہیں۔ صارف کا ڈیٹا (پاس ورڈ، سیٹنگز، ڈیٹابیس) Internal Storage میں محفوظ ہوتا ہے اور کیش صاف کرنے سے متاثر نہیں ہوتا۔
Google Play 100 MB سے تجاوز نہ کرنے کی سفارش کرتا ہے۔ گہرے میڈیا مواد (سوشل نیٹ ورکس، میسنجر) والی ایپس کے لیے 200 MB تک قابل قبول ہے بشرطیکہ خودکار صفائی لاگو ہو اور علیحدہ کیش کے ذریعے حد مقرر کی گئی ہو۔
ہاں، iOS جگہ کم ہونے پر یا بیک اپ سے بحال کرتے وقت Library/Caches سے فائلیں حذف کر سکتا ہے۔ سسٹم غیر اہم ڈیٹا کی خودکار صفائی کے لیے purgeable storage میکانزم استعمال کرتا ہے۔
cacheDir ڈیوائس کی اندرونی میموری میں واقع ہے اور ایپ ان انسٹال کرنے پر حذف ہو جاتا ہے۔ externalCacheDir SD کارڈ پر واقع ہے اور ان انسٹال کرنے کے بعد بھی رہ سکتا ہے — دوبارہ انسٹال کرنے کے بعد پہلے لانچ پر کوڈ کے ذریعے دستی طور پر صاف کیا جانا چاہیے۔
Glide، Picasso اور Coil جیسی لائبریریاں دو سطحی کیشنگ استعمال کرتی ہیں: L1 — RAM (فوری رسائی کے لیے LRU کیش)، L2 — ڈسک (ایپ کیش ڈائریکٹری)۔ ڈسک کیش میں ترتیب پذیر سائز کی حد اور پرانی فائلوں کو ہٹانے کی پالیسی ہوتی ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں