मैं वर्तमान में एक संगठन के साथ एक परियोजना पर काम कर रहा हूँ:
- क्लाइंट - REST एपीआई के माध्यम से मुख्य सर्वर से डेटा प्राप्त होता है।
- सर्वर - तीसरे पक्ष के एपीआई के माध्यम से विभिन्न अन्य सर्वरों से डेटा का अनुरोध
- तृतीय-पक्ष API - मेरे नियंत्रण से बाहर की सेवाएँ जो सर्वर को डेटा प्रदान करती हैं (Reddit, Hackernews, Quora, आदि)।
तर्क के लिए, मान लें कि क्लाइंट को पहले प्रत्येक तृतीय-पक्ष API से आइटमों की एक सूची की आवश्यकता है। इस सूची से, एक आइटम चुना जाएगा जिस बिंदु पर ग्राहक को आइटम की पूरी सामग्री के साथ-साथ आइटम पर प्रतिक्रियाएं (टिप्पणियाँ) देखने की आवश्यकता है। मैं तीन विकल्पों के बीच निर्णय लेने की कोशिश कर रहा हूं:
एक ला कार्टे
इस दृष्टिकोण में, मेरे सर्वर पर 3 अलग-अलग समापन बिंदु होंगे: एक आइटम की सूची प्राप्त करने के लिए, एक आइटम के लिए मुख्य सामग्री प्राप्त करने के लिए, और एक आइटम की प्रतिक्रियाएं प्राप्त करने के लिए।
- पेशेवरों: मुझे कभी भी ज़रूरत से ज़्यादा अनुरोध नहीं करना चाहिए, अनुरोध छोटे होने चाहिए इसलिए आम तौर पर उन्हें तेज होना चाहिए।
- विपक्ष: मुझे बहुत सारे अनुरोध करने हैं। सूची से एक आइटम चुनने के बाद, उपयोगकर्ता को मुख्य सामग्री को देखने से पहले इंतजार करना पड़ सकता है और फिर प्रतिक्रियाओं को देखने के लिए अधिक समय तक इंतजार करना होगा
सर्वर-साइड कैश
इस अनुरोध में, मैं अपने सर्वर को सभी स्रोतों के लिए सभी डेटा "लाने" के लिए एक ही कॉल करूंगा। डेटा को सर्वर पर कैश किया जाएगा। क्लाइंट के पास पहले की तरह ही REST एंडपॉइंट्स होंगे, सिवाय इसके कि कॉल के बीच ज्यादा इंतजार नहीं होगा क्योंकि मेरे सर्वर में पहले से ही डेटा है और बस उसे क्लाइंट को फीड करना है।
- पेशेवरों: ग्राहक पक्ष पर लागू करने के लिए अभी भी आसान है, लेकिन विलंबता मुद्दों के बिना
- विपक्ष: थोड़ा और अधिक शामिल सर्वर पक्ष, और पहली कॉल वास्तव में बहुत लंबा लग सकता है।
क्लाइंट-साइड कैश
यह परिदृश्य पिछले वाले के समान है, केवल क्लाइंट को छोड़कर कभी भी सर्वर से एक अनुरोध किया जाता है: मुझे सभी डेटा दें। यहां से ग्राहक की जिम्मेदारी है कि वह डेटा को बचाए और उचित रूप से इसका उपयोग करे।
- पेशेवरों: आसान सर्वर कार्यान्वयन, पहली कॉल के बाद बहुत तेजी से
- विपक्ष: पहला कॉल बहुत धीमा, अधिक जटिल क्लाइंट-साइड कार्यान्वयन होगा
मुझे यकीन नहीं है कि कौन सा सबसे अच्छा तरीका है, या हो सकता है कि मैं स्पष्ट समाधान याद कर रहा हूं। किसी भी सलाह की काफी सराहना की जाएगी!