2012-04-16 19 views
6

के लिए outputcache हिट करता है हम एक वितरित कैशिंग समाधान के रूप में एएसपी.नेट एमवीसी 3 और ऐपफैब्रिक के साथ काफी बड़ी साइट निर्माण कर रहे हैं। हमने अपने ऐपफैब्रिक क्लस्टर का उपयोग करने के लिए एक कस्टम आउटपुट कैश एडाप्टर लागू किया है।एएसपी.नेट एमवीसी प्रत्येक कार्रवाई

हम देख रहे हैं कि एएसपी.नेट प्रत्येक क्रिया के लिए आउटपुट कैशप्रोवाइडर.गेट() विधि को कॉल करता है, भले ही वह कार्रवाई @OutputCacheAttribute के साथ सजाया न जाए।

बड़ी समस्या नहीं है यही कारण है कि यदि आप डिफ़ॉल्ट outputcacheprovider का उपयोग, लेकिन यह तब होता है जब आप एक outputcacheprovider कि अलग मशीनों पर रहता है चल रहे हैं।

उत्तर

4

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

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

+0

हाँ जो एक अच्छा स्पष्टीकरण की तरह लगता है। वास्तव में इसके साथ बहुत कुछ नहीं कर सकता है, या तो प्रदर्शन जुर्माना स्वीकार करते हैं, डिफ़ॉल्ट आउटपुट कैशप्रोवाइडर पर वापस जाएं या URLS के लिए एक काले या सफेद सूची प्रदान करें। – TheNameless

+1

@TheNameless मैंने इसे स्वयं नहीं किया है लेकिन आप मार्ग पैरामीटर [किसी भी तरह] नहीं प्राप्त कर सकते हैं (http://www.scottschluer.com/creating-a-routedata-instance-from-a-url/) और फिर नियंत्रक/कार्रवाई पर विशेषताओं की जांच करने के लिए प्रतिबिंब का उपयोग करें? यह आदर्श नहीं है लेकिन संभवतः नेटवर्क राउंड-ट्रिप की तुलना में तेज़ है। – Basic

0

आप डोनट कैश OutputCache विशेषता की सुविधा देता है जो आप के उत्पादन कैश कुंजी के लिए एक उपसर्ग परिभाषित करने के लिए उपयोग कर सकते हैं। इसलिए यदि आपके कैश कुंजी आपके स्वयं के उपसर्ग के साथ शुरू होता है तो अपने कस्टम प्रदाता में केवल कैश प्राप्त करें/सेट करें।