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) பராமரிக்க இந்த மூன்று முறைகளைப் பயன்படுத்தவும்:
- TTL (நேர அடிப்படையிலானது): காலாவதி நேரத்தை (expiration time) அமைக்கவும். இது எளிதானது, ஆனால் பெரும்பாலும் நீங்கள் ஊகிக்க வேண்டியிருக்கும்.
- Webhooks (நிகழ்வு அடிப்படையிலானது): இது மிகவும் துல்லியமானது. ஒரு தயாரிப்பு புதுப்பிக்கப்படும்போது, Shopify ஒரு webhook-ஐ அனுப்பும். அந்த webhook-ஐப் பயன்படுத்தி உங்கள் பழைய cache entry-யை நீக்கவும்.
- 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