मैंने दस्तावेज़ीकरण पढ़ लिया है, और मैं अभी भी लाने की नीति 'स्टोर-एंड-नेटवर्क' और 'नेटवर्क-ओनली' के बीच अंतर के बारे में उलझन में हूं।

"स्टोर-एंड-नेटवर्क": स्थानीय रूप से कैश्ड डेटा का पुन: उपयोग करेगा और हमेशा एक नेटवर्क अनुरोध भेजेगा, भले ही स्थानीय कैश से कोई डेटा गायब हो या नहीं।

"केवल-नेटवर्क": स्थानीय रूप से कैश्ड डेटा का पुन: उपयोग नहीं करेगा, और रिले में स्थानीय रूप से कैश किए गए किसी भी डेटा को अनदेखा करते हुए, क्वेरी लाने के लिए हमेशा एक नेटवर्क अनुरोध भेजेगा।

मैं अभी यह नहीं समझ सकता कि 'स्टोर-एंड-नेटवर्क' का क्या मतलब है। यह दावा करता है कि यह "स्थानीय रूप से कैश्ड डेटा का पुन: उपयोग करेगा" ... लेकिन यह हमेशा नेटवर्क से प्राप्त होता है, तो वास्तव में इसका पुन: उपयोग क्या हो सकता है?

मेरे ऐप में, मैंने दोनों के साथ प्रयोग किया है, और मुझे व्यवहार में शून्य अंतर मिलता है। क्या कोई इस पर विस्तार कर सकता है, और शायद एक ऐसा परिदृश्य प्रदर्शित कर सकता है जहां 'स्टोर-एंड-नेटवर्क' और 'नेटवर्क-ओनली' वास्तव में एक क्वेरी से अलग परिणाम लौटाएगा?

1
Adam Wall 19 नवम्बर 2020, 20:16

2 जवाब

सबसे बढ़िया उत्तर

बहुत सारे प्रयोग के माध्यम से, मुझे इसका उत्तर मिला:

'केवल-नेटवर्क' डेटा प्राप्त करता है, और रिले स्टोर में किसी भी मान को अपडेट नहीं करता है। यह अन्य अंशों को अद्यतन करने का कारण नहीं बनेगा।

'स्टोर-एंड-नेटवर्क' डेटा प्राप्त करता है, और फिर इन मानों के साथ स्टोर को अपडेट करता है। यह किसी भी आश्रित अंशों को अद्यतन करने का कारण बनेगा, जो तब उनके घटकों को प्रस्तुत करने का कारण बनेगा।

0
Adam Wall 29 सितंबर 2021, 20:11

रिले फ़ेच नीतियां मौजूद हैं ताकि आप नियंत्रित कर सकें कि आपके पास पुराना या अनुपलब्ध डेटा होने पर क्या होता है।

डॉक्स इस अवधारणा पर यहां विस्तार करते हैं: https: //relay.dev/docs/hi/a-guided-tour-of-relay#presence-of-data

हालांकि, संक्षेप में:

  1. अनुपलब्ध डेटा: रिले कचरा स्टोर में डेटा एकत्र करता है जब यह पता लगाता है कि डेटा का एक विशेष टुकड़ा अब कहीं भी प्रस्तुत नहीं किया जा रहा है। इसे विभिन्न तरीकों से नियंत्रित किया जाता है, लेकिन आमतौर पर घटकों के बढ़ते/अनमाउंटिंग के साथ सहसंबद्ध होता है जो किसी विशेष खंड या क्वेरी के संदर्भ को बनाए रखता है। एक बार जब रिले को पता चलता है कि स्टोर में कुछ डेटा का कोई सक्रिय संदर्भ नहीं है, तो यह कचरा संग्रहण के लिए उस डेटा को शेड्यूल करता है।

  2. पुराना डेटा: डेटा अभी भी पुराना हो सकता है लेकिन कचरा संग्रहण के लिए शेड्यूल नहीं किया जा सकता है। यह वह मामला है जहां डेटा "गायब" नहीं है (जैसा कि यह # 1 में है) लेकिन केवल रीफ्रेश करने की आवश्यकता है - संभवतः, उत्परिवर्तन के बाद। अभी भी एक माउंटेड घटक के माध्यम से स्टोर में डेटा का संदर्भ है।

इस अंतर के साथ, "केवल-नेटवर्क" फ़ेच-नीति सचमुच कैश को अनदेखा कर देगी। यह जाँच नहीं करेगा कि घटक को प्रस्तुत करने के लिए आवश्यक डेटा उपलब्ध होगा या नहीं; बल्कि, यह हमेशा एक नेटवर्क अनुरोध को प्रेरित करेगा और आपके स्टोर में डेटा की उपस्थिति (या उसके अभाव) या डेटा की गतिहीनता (या उसके अभाव) के प्रति अज्ञेय है, जैसे कि स्टोर मौजूद नहीं है।

दूसरी ओर, "स्टोर-एंड-नेटवर्क" फ़ेच-पॉलिसी आपके स्टोर में डेटा की उपस्थिति (या उसके अभाव) या गतिहीनता (या उसके अभाव) के प्रति संवेदनशील है।

यह जांच करेगा कि स्टोर में किसी विशेष घटक को प्रस्तुत करने के लिए आवश्यक डेटा मौजूद है या नहीं:

(ए) यदि ऐसा होता है, तो यह घटकों के बच्चों के पेड़ को प्रस्तुत करना और प्रस्तुत करना शुरू करने का प्रयास करेगा, जो यह जांचने की एक समान प्रक्रिया से गुजरेगा कि क्या डेटा गायब है;

(बी) यदि किसी भी बिंदु पर ट्री रिले को डेटा आवश्यकताओं के साथ एक घटक का सामना करना पड़ता है जो स्टोर में मौजूद नहीं है, तो घटक प्रस्तुत नहीं कर सकता है, इसलिए एक नेटवर्क अनुरोध हमेशा निष्पादित किया जाएगा।

तो, "स्टोर-एंड-नेटवर्क" आपको कसकर नियंत्रित करने की अनुमति देता है कि विभिन्न डेटा आवश्यकताओं वाले घटकों का पेड़ कैसे प्रस्तुत करेगा। एक नेटवर्क अनुरोध हमेशा किया जाएगा - फ़ेच नीति केवल यह निर्धारित करती है कि रिले को आपके स्टोर की वर्तमान स्थिति को देखते हुए आपके घटक उपट्री के कुछ हिस्सों के रेंडरिंग को कैसे प्रस्तुत करना / निलंबित करना चाहिए।

(बी) के मामले में, एक अच्छा उदाहरण एक ऐसी स्थिति होगी जहां आपने एक घटक की डेटा आवश्यकताओं को परिभाषित करने वाला एक टुकड़ा घोषित किया था जो पहले अनमाउंट किया गया था, लेकिन वह आपके ऐप में कहीं और एक घटक द्वारा साझा किया गया था। गुम डेटा = नेटवर्क अनुरोध निष्पादित करना + रिले की दुनिया में प्रतिपादन का निलंबन।

दूसरे शब्दों में, फ़ेच नीति वास्तव में इस बारे में है कि आपका ऐप कैसे प्रस्तुत करता है, बनाम आपका ऐप कैसे प्राप्त करता है।

0
JosephHall 28 नवम्बर 2020, 04:26