Shopify GraphQL-ஐ Cache செய்தல்: ஒரு நடைமுறை வழிகாட்டி

GraphQL, REST போல செயல்படாது. நீங்கள் URL மூலம் Cache செய்ய முடியாது. REST-இல், ஒரு endpoint என்பது ஒரு cache entry-க்கு சமம். ஆனால் GraphQL-இல், ஒரே endpoint அனைத்தையும் கையாள்கிறது. ஒரே URL-க்கு அனுப்பப்படும் இரண்டு கோரிக்கைகள் (requests) வெவ்வேறு தரவுகளைத் தரும்.

GraphQL-ஐச் சரியாக Cache செய்ய, உங்கள் cache key-இல் பின்வருவன இடம்பெற வேண்டும்:

  • Query
  • Variables
  • பயனர் சூழல் (locale அல்லது buyer segment)

ஒரு வேகமான அமைப்பை உருவாக்க அடுக்குகளைப் (layers) பயன்படுத்தவும்:

  • Client cache: உலாவியில் (browser) session-ஐ மீண்டும் பயன்படுத்த.
  • Edge cache: பொதுவான storefront பக்கங்களுக்கு.
  • App cache: உங்கள் சர்வரில் உள்ள பகிரப்பட்ட தரவுகளுக்கு.
  • Persisted queries: நிலையான, hash-அடிப்படையிலான keys-களுக்கு.

தரவு எவ்வளவு வேகமாக மாறுகிறது என்பதைப் பொறுத்து உங்கள் cache நேரத்தை அமைக்கவும்.

இந்தத் தரவுகளை நீண்ட காலத்திற்கு Cache செய்யவும்:

  • தயாரிப்பு விவரங்கள் (Product details)
  • Collections
  • Shop settings

இந்தத் தரவுகளைக் குறுகிய காலத்திற்கு Cache செய்யவும்:

  • விலை நிர்ணயம் (Pricing)
  • இருப்பின் இருப்பு (Inventory availability)

இந்தத் தரவுகளை ஒருபோதும் Cache செய்ய வேண்டாம்:

  • Carts
  • Checkout செயல்முறைகள் (Checkout processes)
  • வாடிக்கையாளர் சார்ந்த விலை நிர்ணயம் (Customer-specific pricing)

நீங்கள் B2B கடைகளுக்குச் சேவை செய்கிறீர்கள் என்றால், உங்கள் cache key-இல் நிறுவனத்தின் ID-யை (company ID) கண்டிப்பாகச் சேர்க்க வேண்டும். தவறினால், வாடிக்கையாளர் A, வாடிக்கையாளர் B-யின் ஒப்பந்த விலையைப் (contract price) பார்க்க நேரிடும்.

தரவின் புதுமையைப் (freshness) பராமரிக்க இந்த மூன்று முறைகளைப் பயன்படுத்தவும்:

  1. TTL (நேர அடிப்படையிலானது): காலாவதி நேரத்தை (expiration time) அமைக்கவும். இது எளிதானது, ஆனால் பெரும்பாலும் நீங்கள் ஊகிக்க வேண்டியிருக்கும்.
  2. Webhooks (நிகழ்வு அடிப்படையிலானது): இது மிகவும் துல்லியமானது. ஒரு தயாரிப்பு புதுப்பிக்கப்படும்போது, Shopify ஒரு webhook-ஐ அனுப்பும். அந்த webhook-ஐப் பயன்படுத்தி உங்கள் பழைய cache entry-யை நீக்கவும்.
  3. Stale-while-revalidate: பின்னணியில் (background) cache-ஐப் புதுப்பிக்கும் அதே வேளையில், பழைய தரவை உடனடியாக வழங்கவும்.

நம்பகமான webhook handlers-களை உருவாக்கவும். ஒரு webhook தோல்வியடைந்தால், உங்கள் cache பழைய தரவிலேயே (stale) இருக்கும். இதைத் தவிர்க்க 'retries'-களைப் பயன்படுத்தவும்.

உங்கள் உத்தி சரியாகச் செயல்படுகிறதா என்பதை அறிய இந்த அளவீடுகளில் (metrics) கவனம் செலுத்துங்கள்:

  • Hit ratio: அதிக எண்ணிக்கையிலான hits-களை இலக்காகக் கொள்ளவும்.
  • Latency: உங்கள் பதில் நேரம் (response time) குறைய வேண்டும்.
  • தவிர்க்கப்பட்ட API அழைப்புகள் (API calls avoided): அதிக hits இருந்தால் செலவு குறையும்.
  • Stale நிகழ்வுகள்: தவறான விலைகள் அல்லது இருப்பு அறிக்கைகள் (stock reports) வராமல் இருப்பதே உங்கள் இலக்கு.

உங்கள் cache-களை அடுக்குகளாகப் பிரிக்கவும். தரவின் மாற்றத்திற்கு ஏற்ப காலாவதி நேரங்களை அமைக்கவும். பழைய தரவை நீக்க webhooks-களைப் பயன்படுத்தவும். தனிப்பயனாக்கத்தை (personalization) மதிக்கும் வகையில் keys-களை உருவாக்கவும்.

ஆதாரம்: https://dev.to/masadashraf/caching-shopify-graphql-a-practical-guide-for-developers-33k8