2010-09-03 13 views
8

मेरे पास एक आरईएसटी एपीआई है जहां मैं इंडेक्स (जीईटी/एफयू) की जेएसओएन प्रतिक्रिया और प्रदर्शन को महत्वपूर्ण रूप से बढ़ाने के लिए पढ़ने की क्रिया (जीईटी/फू/1) कैश करना चाहता हूं। जब संसाधन पर कोई पोस्ट या पुट होता है तो इंडेक्स के लिए कैश प्रविष्टियां और पढ़ने के परिणाम समाप्त होने की आवश्यकता होती है, इसलिए कोई पुरानी सामग्री नहीं दी जाती है।आरईएसटी एपीआई कैशिंग, क्या मुझे रिवर्स प्रॉक्सी या मेमकेचे (डी) का उपयोग करना चाहिए?

क्या यह एक परिदृश्य है जो रिवर्स प्रॉक्सी जैसे स्क्विड/वार्निश के साथ किया जाता है या आप memcache (d) चुनते हैं?

उत्तर

9

HTTP परत पर बैठे एक रिवर्स प्रॉक्सी का उपयोग करना पारदर्शी है। इसका मतलब है कि तार पर क्या चल रहा है यह देखना संभव है। बुरी चीज यह है कि इनमें से कुछ समर्थन प्रमाणीकृत प्रतिक्रिया कैशिंग हैं, इसलिए यदि आपके संसाधनों को प्रमाणीकरण की आवश्यकता होती है तो उनकी दक्षता 0 तक गिर सकती है। रिवर्स प्रॉक्सी आमतौर पर संसाधन ए (/foo) की स्वचालित रूप से समाप्त नहीं होती है जब यह पूरी तरह से असंबंधित संसाधन बी (/foo/1) संशोधित होता है। यह सही व्यवहार है कि आपको किसी भी तरह अपने समाधान में जोड़ना होगा।

यदि आप memcached का उपयोग करते हैं, तो इन दोनों समस्याओं को हल किया जा सकता है, क्योंकि इसमें पारदर्शिता आवश्यकता नहीं है।

2

मैं वार्निश जैसे रिवर्स प्रॉक्सी के लिए जाऊंगा क्योंकि आप कैश तर्क को शामिल किए बिना अपनी सेवा को कार्यान्वित कर सकते हैं (और परीक्षण) कर सकते हैं, और एक अलग परत के रूप में कैशिंग जोड़ सकते हैं। जब आप वार्निश जीईटी अनुरोध (उपलब्धता के लिए बढ़िया) के लिए पुराने परिणाम प्रदान करते हैं, तो आप अपनी सेवा को अपग्रेड/पुनरारंभ कर सकते हैं, और विशिष्ट जीईटी/पोस्ट क्रियाओं के आधार पर मौजूदा कैश परिणामों को आक्रमण (शुद्ध) करने के लिए वार्निश में नियमों को सेट करना आसान है।

1

यदि आप वितरित मेमोरी मेमकैड को नियोजित करना चाहते हैं तो यह एक अच्छा समाधान है। https://github.com/rubyorchard/middleman एक रिवर्स प्रॉक्सी है जो कैशिंग के लिए memcached का उपयोग करता है।

+0

यह लिंक टूटा हुआ है। – airboss

संबंधित मुद्दे