𝗖𝗮𝗰𝗵𝗶𝗻𝗴 𝗦𝗵𝗼𝗽𝗶𝗳𝘆 𝗚𝗥𝗔𝗣𝗛𝗤𝗟: 𝗔 𝗣𝗿𝗮𝗰𝘁𝗶𝗰𝗮𝗹 𝗚𝘂𝗶𝗱𝗲
GraphQL, REST లాగా పనిచేయదు. మీరు URL ద్వారా క్యాష్ చేయలేరు. RESTలో, ఒక ఎండ్పాయింట్ అంటే ఒక క్యాష్ ఎంట్రీ. GraphQLలో, ఒకే ఎండ్పాయింట్ అన్నింటినీ నిర్వహిస్తుంది. ఒకే URLకి పంపే రెండు రిక్వెస్ట్లు వేర్వేరు డేటాను అందిస్తాయి.
GraphQLని సరిగ్గా క్యాష్ చేయడానికి, మీ క్యాష్ కీ (cache key) వీటిని కలిగి ఉండాలి:
- క్వెరీ (The query)
- వేరియబుల్స్ (The variables)
- యూజర్ కాంటెక్స్ట్ (locale లేదా buyer segment)
వేగవంతమైన సిస్టమ్ను నిర్మించడానికి లేయర్లను ఉపయోగించండి:
- క్లయింట్ క్యాష్ (Client cache): బ్రౌజర్లో సెషన్ పునర్వినియోగం కోసం.
- ఎడ్జ్ క్యాష్ (Edge cache): పబ్లిక్ స్టోర్ఫ్రంట్ పేజీల కోసం.
- యాప్ క్యాష్ (App cache): మీ సర్వర్లోని షేర్డ్ డేటా కోసం.
- పర్సిస్టెడ్ క్వెరీస్ (Persisted queries): స్థిరమైన, హ్యాష్-ఆధారిత కీల కోసం.
డేటా ఎంత వేగంగా మారుతుందో దానికి అనుగుణంగా మీ క్యాష్ సమయాన్ని (cache time) నిర్ణయించండి.
ఈ అంశాలను ఎక్కువ కాలం పాటు క్యాష్ చేయండి:
- ప్రొడక్ట్ వివరాలు (Product details)
- కలెక్షన్స్ (Collections)
- షాప్ సెట్టింగ్స్ (Shop settings)
ఈ అంశాలను తక్కువ కాలం పాటు క్యాష్ చేయండి:
- ధరలు (Pricing)
- ఇన్వెంటరీ లభ్యత (Inventory availability)
ఈ అంశాలను ఎప్పుడూ క్యాష్ చేయకండి:
- కార్ట్లు (Carts)
- చెకౌట్ ప్రక్రియలు (Checkout processes)
- కస్టమర్-నిర్దిష్ట ధరలు (Customer-specific pricing)
మీరు B2B స్టోర్లకు సేవలు అందిస్తుంటే, మీ క్యాష్ కీలో కంపెనీ IDని తప్పనిసరిగా చేర్చాలి. అలా చేయకపోతే, కస్టమర్ A, కస్టమర్ B యొక్క కాంట్రాక్ట్ ధరను చూడవచ్చు.
డేటా తాజాదనాన్ని (freshness) నిర్వహించడానికి ఈ మూడు పద్ధతులను ఉపయోగించండి:
- TTL (Time-based): ఎక్స్పైరీ సమయాన్ని సెట్ చేయండి. ఇది సరళమైనది కానీ మీరు తరచుగా అంచనా వేయాల్సి ఉంటుంది.
- Webhooks (Event-based): ఇది అత్యంత ఖచ్చితమైనది. ఒక ప్రొడక్ట్ అప్డేట్ అయినప్పుడు, Shopify ఒక వెబ్హుక్ (webhook) పంపుతుంది. మీ పాత క్యాష్ ఎంట్రీని తొలగించడానికి ఆ వెబ్హుక్ను ఉపయోగించండి.
- Stale-while-revalidate: బ్యాక్గ్రౌండ్లో క్యాష్ను రిఫ్రెష్ చేస్తున్నప్పుడు, పాత డేటాను తక్షణమే అందించండి.
నమ్మదగిన వెబ్హుక్ హ్యాండ్లర్లను (webhook handlers) నిర్మించండి. ఒక వెబ్హుక్ విఫలమైతే, మీ క్యాష్ పాతదిగానే (stale) ఉండిపోతుంది. దీనిని నివారించడానికి రిట్రైలను (retries) ఉపయోగించండి.
మీ వ్యూహం పని చేస్తుందో లేదో తెలుసుకోవడానికి ఈ మెట్రిక్స్పై దృష్టి పెట్టండి:
- హిట్ రేషియో (Hit ratio): ఎక్కువ హిట్ల కోసం లక్ష్యంగా పెట్టుకోండి.
- లేటెన్సీ (Latency): మీ రెస్పాన్స్ టైమ్ తగ్గాలి.
- నివారించబడిన API కాల్స్ (API calls avoided): ఎక్కువ హిట్లంటే తక్కువ ఖర్చు అని అర్థం.
- పాత డేటా సంఘటనలు (Stale incidents): తప్పు ధరలు లేదా స్టాక్ రిపోర్టులు రాకుండా ఉండటమే మీ లక్ష్యం.
మీ క్యాష్లను లేయర్లుగా విభజించండి. డేటా యొక్క మార్పు రేటుకు (volatility) అనుగుణంగా ఎక్స్పైరీ సమయాలను నిర్ణయించండి. పాత డేటాను తొలగించడానికి వెబ్హుక్లను ఉపయోగించండి. పర్సనలైజేషన్ను గౌరవించేలా కీలను నిర్మించండి.
Source: https://dev.to/masadashraf/caching-shopify-graphql-a-practical-guide-for-developers-33k8