Caching کیا ہے؟ ایپ بنانے والوں کے لیے سادہ رہنما
Caching کا مطلب ہے کسی ایسی چیز کی تیار نقل رکھنا جسے حاصل کرنا سست یا مہنگا تھا، تاکہ اس کی اگلی درخواست کا جواب اس نقل سے تیزی سے دیا جا سکے۔ محفوظ شدہ نقل کو cache کہتے ہیں۔ آپ کا براؤزر تصاویر کیش کرتا ہے تاکہ آپ کی دوسری بار کی وزٹ پر سائٹ تیزی سے کھلے؛ سرور کسی سست ڈیٹابیس کوئری کا نتیجہ کیش کرتا ہے تاکہ ہر زائر کے لیے اسے دوبارہ نہ چلانا پڑے۔
Caching ایپس کو تیز اور چلانے میں سستا بناتی ہے۔ اس کا ایک بڑا تبادلہ یہ ہے کہ نقل پرانی ہو سکتی ہے۔
AI سے بنانے میں caching کیوں اہم ہے
AI سے بنی ایپس میں caching سے تین طرح واسطہ پڑتا ہے:
- “میں نے ایپ اپ ڈیٹ کی مگر مجھے ابھی بھی پرانا ورژن نظر آ رہا ہے۔” یہ سب سے عام caching کا لمحہ ہے، اور عموماً نقصان دہ نہیں ہوتا: آپ کا براؤزر یا CDN محفوظ شدہ نقل دکھا رہا ہوتا ہے۔
- رفتار۔ اگر کوئی صفحہ اس لیے سست ہے کہ وہ ہر زائر کے لیے وہی حساب دوبارہ کرتا ہے، تو نتیجہ کیش کرنے سے وہ فوری محسوس ہو سکتا ہے۔
- لاگت۔ بہت سے AI بلڈرز اور ہوسٹس کمپیوٹ، ڈیٹابیس وقت اور بیرونی API کالز کا معاوضہ لیتے ہیں۔ اگر ہزار زائرین ایک ہی مہنگی درخواست چلائیں، تو caching سے آپ اسے صرف ایک بار ادا کرتے ہیں۔
بنیادی باتیں جاننے سے آپ جہاں مدد ملے وہاں caching مانگ سکتے ہیں اور جب یہی کسی چیز کے غلط نظر آنے کی وجہ ہو تو اسے پہچان سکتے ہیں۔
روزمرہ کی ایک مثال
ایک مصروف کیفے کے باورچی خانے کا تصور کریں۔
ہر صبح باورچی ہر کافی کو آرڈر پر تازہ پیسے ہوئے دانوں سے بنا سکتا ہے۔ یہ سست ہے۔ اس کے بجائے وہ گرم پلیٹ پر فلٹر کافی کا ایک برتن تیار رکھتا ہے۔ زیادہ تر گاہکوں کو چند سیکنڈ میں کپ مل جاتا ہے، یہ cache hit ہے۔ جب برتن خالی ہو جائے تو کوئی تازہ بناتا ہے، یہ cache miss ہے۔
مگر زیادہ دیر رکھی کافی باسی ہو جاتی ہے، اس لیے کیفے کا اصول ہے کہ تیس منٹ سے پرانا برتن پھینک دیا جائے۔ یہ اصول cache کا expiry time ہے۔ کوئی بھی دن بھر ایک ہی برتن نہیں رکھتا، اور کسی کا خاص آرڈر، جیسے oat milk اور تین چمچ چینی والا، پہلے سے نہیں بنایا جاتا؛ کچھ چیزیں کیش ہی نہیں ہونی چاہئیں۔
Caches کہاں رہتے ہیں
ایک صفحہ لوڈ ہونے کے دوران کئی caches سے گزر سکتا ہے، صارف کے قریب ترین سے دور ترین تک:
| Cache | کہاں ہے | عموماً کیا محفوظ ہوتا ہے | مثال |
|---|---|---|---|
| Browser cache | زائر کے آلے پر | تصاویر، stylesheets، scripts، فونٹس | دوسرے صفحے پر آپ کا لوگو فوری لوڈ ہوتا ہے |
| CDN cache | دنیا بھر میں سرورز، زائرین کے قریب | جامد فائلیں اور کبھی کبھار پورے صفحات | ٹوکیو کا زائر فائلیں قریبی سرور سے لیتا ہے، آپ کے اصل سرور سے نہیں |
| Application cache | آپ کے سرور پر یا اس کے قریب، اکثر memory یا Redis میں | سست کوئریز یا بیرونی API کالز کے نتائج | آج کی شرحِ مبادلہ، ایک بار ہر گھنٹے حاصل کی گئی |
| Database cache | ڈیٹابیس کے اندر | حال ہی میں استعمال ہونے والا ڈیٹا اور کوئری پلانز | مقبول قطاریں تیز memory میں رہتی ہیں |
CDN (content delivery network) بنیادی طور پر آپ کی سائٹ کی فائلوں کے لیے دنیا بھر میں caches کا نیٹ ورک ہے۔
cache کیسے طے کرتا ہے کہ کیا رکھنا ہے
ہر cache کو انہی سوالوں کا جواب دینا ہوتا ہے:
- کیا کیش ہو سکتا ہے؟ عوامی، مشترکہ ڈیٹا (کسی پروڈکٹ کی تصویر، بلاگ پوسٹ) — ہاں۔ نجی ڈیٹا (صارف کا اکاؤنٹ صفحہ، اس کے پیغامات) — کسی مشترکہ cache میں کبھی نہیں۔
- کتنی دیر کے لیے؟ یہ TTL (time to live) ہے۔ لوگو ایک سال کے لیے کیش ہو سکتا ہے؛ اسٹاک کی سطح 30 سیکنڈ کے لیے۔
- یہ کیسے اپ ڈیٹ ہوتا ہے؟ یا تو نقل کی میعاد ختم ہو اور دوبارہ حاصل کی جائے، یا ڈیٹا بدلنے پر ایپ جان بوجھ کر اسے ہٹا دے، جسے invalidation کہا جاتا ہے۔
ویب سائٹس کے لیے سرور براؤزرز اور CDNs کو Cache-Control ہیڈر کے ذریعے بتاتا ہے کہ ہر فائل کیسے کیش کرنی ہے۔ مثلاً Cache-Control: max-age=3600 کا مطلب ہے “اس نقل کو ایک گھنٹے تک دوبارہ استعمال کیا جا سکتا ہے۔”
جدید بلڈ ٹولز جامد فائلوں کا سب سے مشکل حصہ cache busting سے سنبھالتے ہیں: جب بھی کوئی فائل بدلتی ہے، اسے فنگر پرنٹ کے ساتھ نیا نام ملتا ہے، جیسے app.3f9a2c.js۔ براؤزرز پرانا نام لمبے عرصے تک کیش کر سکتے ہیں، کیونکہ نئے ورژن کا نام ہی مختلف ہے۔
ایک عملی مثال: ایک پروڈکٹ کیٹلاگ
آپ کے پاس ایک چھوٹی آن لائن دکان ہے۔ ہوم پیج ڈیٹابیس سے 50 پروڈکٹس، قیمتیں اور اسٹاک کی سطح دکھاتا ہے، اور ایک “trending” فہرست جس کے لیے تمام آرڈرز پر ایک سست حساب درکار ہے۔
- تصاویر اور scripts براؤزر اور CDN کے ذریعے لمبے عرصے تک کیش ہوتے ہیں۔ ہر نئے build میں بدلی ہوئی فائلوں کو نئے نام ملتے ہیں، اس لیے اپ ڈیٹس پھر بھی ظاہر ہوتے ہیں۔
- Trending فہرست ہر 10 منٹ میں ایک بار حساب ہوتی ہے اور application cache میں محفوظ ہوتی ہے۔ ان 10 منٹوں میں ہر زائر کو محفوظ نتیجہ فوری ملتا ہے۔
- قیمتیں تھوڑی دیر کے لیے کیش ہوتی ہیں، اور جب بھی آپ کوئی پروڈکٹ بدلتے ہیں تو cache صاف ہو جاتا ہے، تاکہ گاہکوں کو کبھی زیادہ دیر پرانی قیمت نظر نہ آئے۔
- چیک آؤٹ پر اسٹاک کبھی کیش نہیں ہوتا۔ جب کوئی “Buy” دباتا ہے، ایپ اصل ڈیٹابیس چیک کرتی ہے، تاکہ وہ کوئی ایسی چیز نہ بیچ دے جو ابھی ختم ہوئی ہو۔
- کارٹ اور اکاؤنٹ کے صفحات مشترکہ caches میں کبھی محفوظ نہیں ہوتے، کیونکہ وہ ذاتی ہیں۔
نتیجہ: ہوم پیج تیز ہے، ڈیٹابیس کا کام بہت کم ہے، اور جو چیزیں پیسے یا رازداری کے لیے اہم ہیں وہ کبھی پرانی نہیں ہوتیں۔
اہم اصطلاحات
| اصطلاح | مطلب |
|---|---|
| Cache hit / miss | ڈیٹا cache میں ملا / ماخذ سے حاصل کرنا پڑا۔ |
| TTL (time to live) | کیش شدہ نقل کتنی دیر تک تازہ سمجھی جاتی ہے۔ |
| Stale data | کیش شدہ نقل جو پرانی ہو چکی ہو۔ |
| Invalidation | اصل ڈیٹا بدلنے کی وجہ سے کیش شدہ نقل جان بوجھ کر ہٹانا۔ |
| Cache busting | فائل بدلنے پر اس کا نام یا URL بدلنا تاکہ caches نیا ورژن لیں۔ |
| Cache-Control | وہ HTTP ہیڈر جو براؤزرز اور CDNs کو بتاتا ہے کہ جواب کیسے کیش کرنا ہے۔ |
| Hard refresh | صفحہ دوبارہ لوڈ کرتے وقت براؤزر کو اس کا کیش نظر انداز کرنے کو کہنا۔ |
| Redis | ایک مقبول in-memory ڈیٹا اسٹور، جو اکثر application cache کے طور پر استعمال ہوتا ہے۔ |
عام غلط فہمیاں
- “Caching ہمیشہ اچھی ہے۔” غلط چیز کیش کرنے سے حقیقی بگز آتے ہیں: پرانی قیمتیں، نئی پوسٹس کا غائب ہونا، یا بدترین صورت میں ایک صارف کا نجی صفحہ دوسرے کو دکھ جانا۔ جان بوجھ کر کیش کریں۔
- “اگر پرانا ورژن دکھ رہا ہے تو میری اپ ڈیٹ ناکام ہو گئی۔” عموماً ایسا نہیں ہوتا۔ کچھ ٹوٹا ہوا سمجھنے سے پہلے hard refresh (Ctrl+Shift+R، یا Mac پر Cmd+Shift+R) یا پرائیویٹ ونڈو آزمائیں۔
- “Caching سست ایپ کو ٹھیک کر دیتی ہے۔” یہ بار بار کی درخواستوں کی سستی کو چھپاتی ہے۔ پہلی درخواست پھر بھی سست ہوتی ہے، اور اگر اصل مسئلہ ڈیٹابیس انڈیکس کی کمی ہے تو اسے بھی ٹھیک کریں۔
- “جتنا ہو سکے لمبے عرصے تک ہر چیز کیش کرنی چاہیے۔” لمبے کیش اوقات ان فائلوں کے لیے موزوں ہیں جن کے بدلنے پر نئے نام ملتے ہیں۔ HTML صفحات اور ڈیٹا کے لیے چھوٹے اوقات زیادہ محفوظ ہیں۔
- “میرا کیش صاف کرنے سے سب کے لیے ٹھیک ہو جائے گا۔” یہ صرف آپ کا براؤزر صاف کرتا ہے۔ زائرین اور CDN caches کی اپنی نقلیں باقی رہتی ہیں۔
اپنے AI بلڈر سے کیا پوچھیں
- “اس ایپ کے کون سے حصے سست ہیں، اور کون سے محفوظ طریقے سے کیش ہو سکتے ہیں؟”
- “[trending فہرست / API کا نتیجہ] کو [N] منٹ کے لیے کیش کرو، اور جب بنیادی ڈیٹا بدلے تو اسے صاف کرو۔”
- “یقینی بناؤ کہ ذاتی یا اکاؤنٹ ڈیٹا والا کوئی صفحہ CDN یا مشترکہ cache کے ذریعے کیش نہ ہو سکے۔”
- “دستخط شدہ جامد فائلوں کے لیے لمبے کیش اوقات رکھو، اور HTML کے لیے چھوٹے۔”
- “[بیرونی API] کے جوابات کیش کرو تاکہ ہر صفحہ لوڈ پر اسے کال نہ کرنا پڑے، اور بتاؤ کہ یہ ڈیٹا کتنا پرانا ہو سکتا ہے۔”
- “شائع کرنے کے بعد مجھے پرانا ورژن نظر آ رہا ہے۔ کیا یہ میرے براؤزر کا کیش ہے، یا کوئی چیز deploy نہیں ہوئی؟”
Mythex میں Caching
Mythex ایپ پر اپ ڈیٹ شائع کرنے کے بعد docs بتاتے ہیں کہ CDN caches تھوڑی دیر پیچھے رہ سکتے ہیں، اور عوامی URL کا hard refresh نیا ورژن دکھاتا ہے، دیکھیں شائع کیسے کریں۔ Hosting limits صفحہ جامد assets کو کیش کرنے کی بھی سفارش کرتا ہے، کیونکہ ہوسٹنگ، ڈیٹابیس وقت اور bandwidth آپ کے کریڈٹ بیلنس سے ادا ہوتے ہیں۔ اس سے آگے، جیسے کوئری کے نتائج یا API کے جوابات کیش کرنا، وہ چیز ہے جسے آپ ایجنٹ سے اپنی ایپ میں بنوانے کو کہتے ہیں۔
متعلقہ مطالعہ: CDN کیا ہے، اپنی ویب سائٹ کو تیز کیسے بنائیں اور rate limiting کیا ہے۔
سوالات
سادہ الفاظ میں caching کیا ہے؟
Caching کا مطلب ہے کسی ایسی چیز کی نقل محفوظ کرنا جسے حاصل کرنا سست یا مہنگا تھا، تاکہ اگلی بار جب وہ درکار ہو تو محفوظ نقل سے تیزی سے دی جا سکے۔ براؤزرز، CDNs، سرورز اور ڈیٹابیسز سب ایپس کو تیز اور چلانے میں سستا بنانے کے لیے caches استعمال کرتے ہیں۔
ویب سائٹ اپ ڈیٹ کرنے کے بعد مجھے پرانا ورژن کیوں نظر آتا ہے؟
شاید آپ کا براؤزر یا CDN فائلوں کی پرانی محفوظ نقل دکھا رہا ہے۔ Hard refresh (ونڈوز پر Ctrl+Shift+R، Mac پر Cmd+Shift+R) عموماً اسے ٹھیک کر دیتا ہے۔ زائرین کے لیے، اچھی طرح بنی ہوئی سائٹس اپ ڈیٹ شدہ فائلوں کو نئے نام دیتی ہیں تاکہ caches خود نیا ورژن لے لیں۔
کیش صاف کرنے سے کیا ہوتا ہے؟
براؤزر کیش صاف کرنے سے فائلوں اور صفحات کی محفوظ نقلیں حذف ہو جاتی ہیں، تاکہ اگلی بار سب کچھ نئے سرے سے ڈاؤن لوڈ ہو۔ اس سے وہ صفحات ٹھیک ہو سکتے ہیں جو ٹوٹے یا پرانے نظر آ رہے ہوں، البتہ پہلی بار بعد میں صفحات تھوڑے سست کھلیں گے۔
کیا caching مسائل پیدا کر سکتی ہے؟
ہاں۔ اصل خطرہ پرانا ڈیٹا دکھانا ہے، جیسے پرانی قیمت یا پرانا اسٹاک، یا اس سے بھی بدتر، کسی ایک صارف کا نجی صفحہ دوسرے کو دکھا دینا۔ اچھے caching اصول طے کرتے ہیں کہ کیا محفوظ ہو سکتا ہے، کتنی دیر کے لیے، اور ذاتی ڈیٹا کو مشترکہ caches میں کبھی نہیں رکھا جاتا۔