मैंने कोड थोड़ा देखा, और उसमें काफ़ी अजीब हिस्से दिखे। यह सही से चलेगा या नहीं, पता नहीं। संरचना ऐसी है कि पहले देखा जाता है कि cache है या नहीं, और अगर नहीं है तो server से endpoint पर फिर से POST request भेजी जाती है, इसलिए दो endpoint रखने पड़ते हैं, और क्योंकि यह GraphQL query को पूरी तरह cache करता है, मुझे नहीं लगता कि इसके use case भी बहुत ज़्यादा होंगे।
तो... फिर GraphQL cache को कॉन्फ़िगर करना सबसे अच्छा कैसे होगा? GraphQL request parameters अलग-अलग cases में बदल सकते हैं, इसलिए अगर मैं cache खुद भी बनाऊँ, तब भी अगर server-side cache कॉन्फ़िगर करूँ तो वह DacheQL से बहुत अलग नहीं लगेगा। क्या इससे बेहतर कोई तरीका है? अचानक यह जिज्ञासा हुई, इसलिए पूछ रहा हूँ!
आमतौर पर लगता है कि cache के लिए resource-level data loader का इस्तेमाल किया जाता है। ऐसा नहीं है कि उस तरह का तरीका इस्तेमाल नहीं किया जा सकता, लेकिन इस लाइब्रेरी के लिए use case कम हैं और endpoint दो हिस्सों में बंट जाने से उस पर हमला करना भी आसान हो जाता है, इसलिए इसके नुकसान काफी हैं। क्योंकि resource request करते समय अगर सिर्फ एक key भी बन जाए, तो cache hit नहीं हो पाता।
3 टिप्पणियां
मैंने कोड थोड़ा देखा, और उसमें काफ़ी अजीब हिस्से दिखे। यह सही से चलेगा या नहीं, पता नहीं। संरचना ऐसी है कि पहले देखा जाता है कि cache है या नहीं, और अगर नहीं है तो server से endpoint पर फिर से POST request भेजी जाती है, इसलिए दो endpoint रखने पड़ते हैं, और क्योंकि यह GraphQL query को पूरी तरह cache करता है, मुझे नहीं लगता कि इसके use case भी बहुत ज़्यादा होंगे।
तो... फिर GraphQL cache को कॉन्फ़िगर करना सबसे अच्छा कैसे होगा? GraphQL request parameters अलग-अलग cases में बदल सकते हैं, इसलिए अगर मैं cache खुद भी बनाऊँ, तब भी अगर server-side cache कॉन्फ़िगर करूँ तो वह DacheQL से बहुत अलग नहीं लगेगा। क्या इससे बेहतर कोई तरीका है? अचानक यह जिज्ञासा हुई, इसलिए पूछ रहा हूँ!
आमतौर पर लगता है कि cache के लिए resource-level data loader का इस्तेमाल किया जाता है। ऐसा नहीं है कि उस तरह का तरीका इस्तेमाल नहीं किया जा सकता, लेकिन इस लाइब्रेरी के लिए use case कम हैं और endpoint दो हिस्सों में बंट जाने से उस पर हमला करना भी आसान हो जाता है, इसलिए इसके नुकसान काफी हैं। क्योंकि resource request करते समय अगर सिर्फ एक key भी बन जाए, तो cache hit नहीं हो पाता।