𝗖𝗮𝗰𝗵𝗶𝗻𝗴 𝗦𝗵𝗼𝗽𝗶𝗳𝘆 𝗚𝗥𝗔𝗣𝗛𝗤𝗟: 𝗔 𝗣𝗿𝗮𝗰𝘁𝗶𝗰𝗮𝗹 𝗚𝘂𝗶𝗱𝗲

GraphQL हे REST प्रमाणे काम करत नाही. तुम्ही URL द्वारे कॅशिंग करू शकत नाही. REST मध्ये, एक एंडपॉइंट म्हणजे एक कॅश एंट्री. GraphQL मध्ये, एक एंडपॉइंट सर्व गोष्टी हाताळतो. एकाच URL वर केलेल्या दोन विनंत्या (requests) वेगवेगळा डेटा परत करू शकतात.

GraphQL योग्यरित्या कॅश करण्यासाठी, तुमच्या कॅश की (cache key) मध्ये खालील गोष्टींचा समावेश असणे आवश्यक आहे:

  • क्वेरी (The query)
  • व्हेरिएबल्स (The variables)
  • युजर कॉन्टेक्स्ट (लोकेल किंवा खरेदीदार सेगमेंट)

जलद सिस्टम तयार करण्यासाठी लेयर्सचा (layers) वापर करा:

  • क्लायंट कॅश: ब्राउझरमध्ये सेशन पुन्हा वापरण्यासाठी.
  • एज कॅश: सार्वजनिक स्टोअरफ्रंट पेजेससाठी.
  • ॲप कॅश: तुमच्या सर्व्हरवरील सामायिक डेटासाठी.
  • पर्सिस्टेड क्वेरीज: स्थिर, हॅश-आधारित कीजसाठी.

डेटा किती वेगाने बदलतो, त्यानुसार तुमचा कॅश वेळ (cache time) ठरवा.

या गोष्टी दीर्घकाळासाठी कॅश करा:

  • प्रॉडक्ट डिटेल्स (Product details)
  • कलेक्शन्ज (Collections)
  • शॉप सेटिंग्स (Shop settings)

या गोष्टी अल्पकाळासाठी कॅश करा:

  • किंमत (Pricing)
  • इन्व्हेंटरी उपलब्धता (Inventory availability)

या गोष्टी कधीही कॅश करू नका:

  • कार्ट्स (Carts)
  • चेकआउट प्रक्रिया (Checkout processes)
  • ग्राहकांसाठी विशिष्ट किंमती (Customer-specific pricing)

जर तुम्ही B2B स्टोअर्सना सेवा देत असाल, तर तुम्हाला तुमच्या कॅश की मध्ये कंपनी आयडी (company ID) समाविष्ट करणे आवश्यक आहे. जर तुम्ही असे केले नाही, तर ग्राहक A ला ग्राहक B ची कॉन्ट्रॅक्ट किंमत दिसू शकते.

डेटा ताजेपणा (freshness) व्यवस्थापित करण्यासाठी या तीन पद्धती वापरा:

  1. TTL (वेळेवर आधारित): एक्सपायरी वेळ सेट करा. हे सोपे आहे परंतु यात तुम्हाला अनेकदा अंदाज लावावा लागतो.
  2. Webhooks (इव्हेंटवर आधारित): ही सर्वात अचूक पद्धत आहे. जेव्हा एखादे उत्पादन अपडेट होते, तेव्हा Shopify एक वेबहुक पाठवते. तुमची जुनी कॅश एंट्री हटवण्यासाठी त्या वेबहुकचा वापर करा.
  3. Stale-while-revalidate: बॅकग्राउंडमध्ये कॅश रिफ्रेश करत असताना जुना डेटा त्वरित उपलब्ध करून द्या.

विश्वसनीय वेबहुक हँडलर्स (webhook handlers) तयार करा. जर वेबहुक अयशस्वी झाला, तर तुमची कॅश जुनी (stale) राहते. हे टाळण्यासाठी 'रिट्रायज' (retries) चा वापर करा.

तुमची रणनीती काम करत आहे की नाही हे पाहण्यासाठी या मेट्रिक्सवर (metrics) लक्ष केंद्रित करा:

  • हिट रेशो (Hit ratio): जास्त संख्येने हिट्स मिळवण्याचे लक्ष्य ठेवा.
  • लॅटन्सी (Latency): तुमचा रिस्पॉन्स टाइम कमी झाला पाहिजे.
  • टाळलेले API कॉल्स: जास्त हिट्स म्हणजे कमी खर्च.
  • स्टेल इन्सिडेंट्स (Stale incidents): चुकीच्या किमती किंवा स्टॉक रिपोर्ट शून्य करणे हे तुमचे ध्येय असावे.

तुमच्या कॅशे लेयर्समध्ये विभागून वापरा. डेटाच्या अस्थिरतेनुसार (volatility) एक्सपायरी वेळ ठरवा. जुना डेटा हटवण्यासाठी वेबहुक्स वापरा. पर्सनलायझेशनचा आदर करतील अशा कीज (keys) तयार करा.

Source: https://dev.to/masadashraf/caching-shopify-graphql-a-practical-guide-for-developers-33k8