𝗦𝗵𝗼𝗽𝗶𝗳𝘆 𝗚𝗥𝗔𝗣𝗛𝗤𝗟 𝗸𝗼 𝗸𝗮𝗶𝘀𝗵 (𝗖𝗮𝗰𝗵𝗲) 𝗸𝗮𝗿𝗻𝗮: 𝗔𝗸 𝗽𝗿𝗮𝗸𝘁𝗶𝗸𝗮𝗹 𝗴𝘂𝗶𝗱𝗲
GraphQL، REST کی طرح کام نہیں کرتا۔ آپ URL کے ذریعے کیش نہیں کر سکتے۔ REST میں، ایک اینڈ پوائنٹ کا مطلب ایک کیش انٹری ہوتی ہے۔ GraphQL میں، ایک ہی اینڈ پوائنٹ سب کچھ سنبھالتا ہے۔ ایک ہی URL پر دو مختلف درخواستیں (requests) مختلف ڈیٹا واپس کر سکتی ہیں۔
GraphQL کو درست طریقے سے کیش کرنے کے لیے، آپ کی کیش کی (cache key) میں یہ چیزیں شامل ہونی چاہئیں:
- کوئری (The query)
- ویری ایبلز (The variables)
- صارف کا سیاق و سباق (locale یا خریدار کا سیگمنٹ)
ایک تیز رفتار سسٹم بنانے کے لیے مختلف تہوں (layers) کا استعمال کریں:
- کلائنٹ کیش (Client cache): براؤزر میں سیشن کے دوبارہ استعمال کے لیے۔
- ایج کیش (Edge cache): عوامی اسٹور فرنٹ پیجز کے لیے۔
- ایپ کیش (App cache): اپنے سرور پر مشترکہ ڈیٹا کے لیے۔
- پرسیٹڈ کوئریز (Persisted queries): مستحکم، ہیش پر مبنی کیز (keys) کے لیے۔
اپنے کیش کے وقت (cache time) کو ڈیٹا کی تبدیلی کی رفتار کے مطابق رکھیں۔
ان چیزوں کو طویل عرصے کے لیے کیش کریں:
- پروڈکٹ کی تفصیلات
- کلیکشنز
- شاپ سیٹنگز
ان چیزوں کو کم وقت کے لیے کیش کریں:
- قیمتیں
- انوینٹری کی دستیابی
ان چیزوں کو کبھی بھی کیش نہ کریں:
- کارٹس (Carts)
- چیک آؤٹ کے عمل
- صارف کے لیے مخصوص قیمتیں
اگر آپ B2B اسٹورز کو خدمات فراہم کرتے ہیں، تو آپ کو اپنی کیش کی (cache key) میں کمپنی کی آئی ڈی (company ID) شامل کرنی چاہیے۔ اگر آپ ایسا نہیں کرتے، تو ممکن ہے کہ کسٹمر A، کسٹمر B کی معاہداتی قیمت دیکھ لے۔
تازگی (freshness) برقرار رکھنے کے لیے ان تین طریقوں کا استعمال کریں:
- TTL (وقت پر مبنی): میعاد ختم ہونے کا وقت مقرر کریں۔ یہ سادہ ہے لیکن اس میں آپ کو اکثر اندازہ لگانا پڑتا ہے۔
- Webhooks (ایونٹ پر مبنی): یہ سب سے زیادہ درست طریقہ ہے۔ جب کوئی پروڈکٹ اپ ڈیٹ ہوتی ہے، تو Shopify ایک webhook بھیجتا ہے۔ اپنی پرانی کیش انٹری کو حذف کرنے کے لیے اس webhook کا استعمال کریں۔
- Stale-while-revalidate: پس منظر (background) میں کیش کو ریفریش کرتے ہوئے فوری طور پر پرانا ڈیٹا فراہم کریں۔
قابل اعتماد webhook ہینڈلرز بنائیں۔ اگر کوئی webhook ناکام ہو جائے، تو آپ کا کیش پرانا (stale) ہی رہے گا۔ اس سے بچنے کے لیے ری ٹرائیز (retries) کا استعمال کریں۔
یہ دیکھنے کے لیے کہ آیا آپ کی حکمت عملی کام کر رہی ہے، ان میٹرکس (metrics) پر توجہ دیں:
- ہٹ ریشو (Hit ratio): ہٹس کی زیادہ تعداد کا ہدف رکھیں۔
- لیٹنسی (Latency): آپ کے رسپانس کا وقت کم ہونا چاہیے۔
- بچائی گئی API کالز: زیادہ ہٹس کا مطلب ہے کم لاگت۔
- پرانے ڈیٹا کے واقعات (Stale incidents): آپ کا مقصد غلط قیمتوں یا اسٹاک کی رپورٹس کے واقعات کو صفر کرنا ہے۔
اپنی کیش کی تہیں (layers) بنائیں۔ میعاد ختم ہونے کے وقت کو ڈیٹا کی تبدیلی کی شرح (volatility) کے مطابق رکھیں۔ پرانا ڈیٹا صاف کرنے کے لیے webhooks کا استعمال کریں۔ ایسی کیز بنائیں جو پرسنلائزیشن (personalization) کا خیال رکھیں۔
Source: https://dev.to/masadashraf/caching-shopify-graphql-a-practical-guide-for-developers-33k8