2009-02-17 6 views
8

मैं एएसपी.नेट एमवीसी प्रोजेक्ट पर काम कर रहा हूं और मैं उस बिंदु पर आया हूं जहां मैं अपनी कैशिंग रणनीति पर विचार करना शुरू करना चाहता हूं। मैंने अपने ढांचे को कैशिंग में उपयोग के लिए जितना संभव हो उतना खुला छोड़ने की कोशिश की है।कैशिंग रणनीति, आउटपुट कैश बनाम डेटा कैश या दोनों?

स्कॉट हैनसेलमैन के पॉडकास्ट के दौरान मैंने जो सुना, उससे StackOverflow.com पृष्ठ आउटपुट कैशिंग और ज़िप को उस सामग्री का उपयोग करता है और इसे रैम में रखता है। ऐसा लगता है कि यह उपयोगकर्ता-व्यापी कैश के लिए बहुत अच्छा होगा लेकिन व्यक्तिगत पृष्ठों जैसे कुछ के लिए आपको प्रत्येक उपयोगकर्ता के लिए एक संस्करण कैश करना होगा और जो बहुत जल्दी नियंत्रण से बाहर हो सकता है।

तो, एक कैशिंग रणनीति के लिए। किस का उपयोग किया जाना चाहिए, आउटपुट कैशिंग, डेटा कैशिंग या संयुक्त? मेरे पहले विचार दोनों हैं, लेकिन जहां तक ​​कैश निर्भरताएं ऐसा लगता है जैसे यह थोड़ा जटिल हो सकता है।

उत्तर

7

अति आक्रामक कैशिंग के बारे में सावधान रहें। हालांकि कैशिंग प्रदर्शन में मदद करने के लिए एक उपकरण है, जब गलत तरीके से उपयोग किया जाता है, तो यह वास्तव में प्रदर्शन को और खराब कर सकता है।

मैं जवाब नहीं दे सकता कि आउटपुट कैशिंग या डेटा कैशिंग आपके प्रोजेक्ट के बारे में अधिक जानकारी के बिना बेहतर तरीके से आपके लिए काम करेगी या नहीं। मैं एक दूसरे का उपयोग करने के लिए कुछ उदाहरण प्रदान करने में मदद कर सकता हूं।

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

यदि आपके पास एक ऐसा दृश्य था जो एक बहुत ही विशिष्ट डेटा सेट का उपयोग करता था और दृश्य का प्रतिपादन जटिल था और इस दृश्य से अक्सर अनुरोध किया गया था (उदाहरण के लिए, स्टैक ओवरफ्लो का होम पेज), तो आपको आउटपुट कैशिंग से बहुत फायदा होगा ।

तो अंत में, यह वास्तव में आपकी आवश्यकताओं पर निर्भर करता है और गलत तरीके से कैशिंग का उपयोग करने के बारे में सावधान रहें।

+0

यह मूल रूप से एक digg क्लोन है। –

+0

एक एएसपी.नेट एमवीसी ऐप के उदाहरण के लिए किग (http://www.codeplex.com/Kigg) देखें जो एक digg क्लोन है। यदि आपका ऐप बिल्कुल डिग क्लोन की तरह है, तो मैं कहानी पृष्ठों और होम पेज को कैश कर दूंगा। आपकी डेटा संरचनाओं को कैसे देखते हैं, इस पर निर्भर करते हुए उपयोगकर्ता की जानकारी कैशिंग आवश्यक हो सकती है। – ajma

8

हम एक बड़े पैमाने पर एपीआई और आउटपुट कैशिंग कर रहे हैं (3 मिलियन एक दिन का दौरा) वेबसाइट (समाचार पोर्टल)। साइट का मुख्य रूप से अज्ञात उपयोगकर्ताओं द्वारा उपयोग किया जाता है, लेकिन हमारे पास प्रमाणीकृत उपयोगकर्ता हैं और साइट के कुछ वैयक्तिकृत हिस्सों के कारण, हम केवल उनके लिए एक संपूर्ण साइट कैश करते हैं, और मुझे यह स्वीकार करना होगा कि हमें स्मृति दबाव के साथ बिल्कुल कोई समस्या नहीं है।

तो, मेरी सलाह एपीआई कैश में आप जो कुछ भी कर सकते हैं उसे कैश कर दें ताकि आपका आउटपुट कैश पुनर्निर्माण भी तेज़ हो।

बेशक, प्रदर्शन काउंटर में अपने कैश अनुपात मानों पर ध्यान दें। आपको कैश किए गए हिट की संख्या> 95% देखना चाहिए।

ध्यान देने का एक और तरीका कैश अमान्यता है, यदि आपके पास बहुत सी संबंधित सामग्री है तो यह एक बड़ा मुद्दा है। उदाहरण के लिए, आप संगीत सामग्री को कैश करते हैं और एक एल्बम या गीत के बारे में जानकारी प्रदर्शित की जा सकती है और कुछ सौ पृष्ठों पर कैश किया जा सकता है। अगर उस गीत में कुछ भी बदलता है, तो आपको इन सभी पृष्ठों को अमान्य करना होगा जो समस्याग्रस्त हो सकते हैं।

नीचे की रेखा, कैशिंग एएसपी.नेट की सबसे अच्छी सुविधाओं में से एक है, यह शानदार तरीके से किया गया है और आप इस पर भरोसा कर सकते हैं।

+4

क्या आप एक वेब फार्म का उपयोग कर रहे हैं?यदि हां, तो क्या प्रत्येक वेब सर्वर के पास अपने वेब सर्वर से स्वतंत्र इनप्रोक कैश होता है? – frankadelic