कैशिंग के लिए डेटा की पहुंच और दृढ़ता / भंडारण परतें प्राकृतिक रूप से प्राकृतिक स्थान हैं। वे I / Os कर रहे हैं, उन्हें आसान, कैशिंग सम्मिलित करने के लिए आसान जगह बना रहा है। मैं हिम्मत करता हूं कि लगभग हर DAL या दृढ़ता की परत, जैसा कि परिपक्व होती है, एक कैशिंग फ़ंक्शन दिया जाता है - अगर यह बहुत शुरुआत से उस तरह से डिज़ाइन नहीं किया गया है।
समस्या आशय की है । DAL और दृढ़ता की परतें अपेक्षाकृत निम्न स्तर के निर्माणों से निपटती हैं - उदाहरण के लिए, रिकॉर्ड, टेबल, पंक्तियाँ और ब्लॉक। वे "व्यवसाय" या एप्लिकेशन-लेयर ऑब्जेक्ट नहीं देखते हैं, या उच्च स्तर पर उनका उपयोग करने के तरीके के बारे में बहुत अधिक जानकारी रखते हैं। जब वे मुट्ठी भर पंक्तियों या एक दर्जन ब्लॉकों को पढ़ते या लिखते हुए देखते हैं, तो यह स्पष्ट नहीं है कि वे प्रतिनिधित्व करते हैं। "वर्तमान में हम जिस जोन्स खाते का विश्लेषण कर रहे हैं" वह कुछ अलग नहीं दिखता "कुछ बुनियादी कराधान दर संदर्भ डेटा को ऐप को बस एक बार की आवश्यकता होती है, और जिसके लिए यह फिर से संदर्भित नहीं होगा।" इस स्तर पर, डेटा डेटा है डेटा है।
DAL / दृढ़ता परत जोखिम में कैशिंग "कोल्ड" कर संदर्भ डेटा वहाँ बैठे हैं, व्यर्थ में 12.2MB कैश पर कब्जा कर रहे हैं और कुछ खाते की जानकारी को विस्थापित कर रहे हैं, वास्तव में, केवल एक मिनट में गहन रूप से उपयोग किया जाएगा। यहां तक कि सबसे अच्छा कैश प्रबंधक उच्च स्तर के डेटा संरचनाओं और कनेक्शनों के बारे में कम जानकारी के साथ काम कर रहे हैं, और बहुत कम अंतर्दृष्टि के साथ कि ऑपरेशन जल्द ही आ रहे हैं, इसलिए वे guesstimation एल्गोरिदम पर वापस आते हैं ।
इसके विपरीत, एप्लिकेशन- या व्यवसाय-परत कैशिंग लगभग इतना साफ नहीं है। इसके लिए अन्य व्यवसाय तर्क के बीच में कैश प्रबंधन संचालन या संकेत सम्मिलित करने की आवश्यकता होती है, जो व्यवसाय कोड को अधिक जटिल बनाता है। लेकिन ट्रेडऑफ़ यह है: मैक्रो-स्तरीय डेटा कैसे संरचित है और कौन से संचालन सामने आ रहे हैं, इसका अधिक ज्ञान होने पर, यह इष्टतम ("क्लेयरवॉयंट" या "बेलेडी मिन") कैशिंग दक्षता के लगभग बेहतर अवसर है।
चाहे व्यवसाय / एप्लिकेशन कोड में कैश प्रबंधन जिम्मेदारी डालने से समझ में आता है कि एक निर्णय कॉल है, और अनुप्रयोगों द्वारा अलग-अलग होगा। कई मामलों में, जबकि यह ज्ञात है कि डीएएल / दृढ़ता की परतें इसे "पूरी तरह से सही" नहीं पाएंगी, ट्रेडऑफ़ यह है कि वे एक बहुत अच्छा काम कर सकते हैं, कि वे एक वास्तुशिल्प रूप से "साफ" और बहुत अधिक गहन परीक्षण योग्य तरीके से ऐसा करते हैं। , और वह निम्न-स्तरीय पकड़ने वाला व्यवसाय / ऐप कोड की जटिलता को बढ़ाने से बचता है।
कम जटिलता उच्च शुद्धता और विश्वसनीयता और तेजी से समय-बाजार को प्रोत्साहित करती है। इसे अक्सर एक महान ट्रेडऑफ़ माना जाता है - कम परिपूर्ण कैशिंग, लेकिन बेहतर-गुणवत्ता, अधिक समय पर व्यापार कोड।