2011-12-29 10 views
6

मैंने एएसपी.नेट में कैशिंग पर पढ़ने की कोशिश की है और अभी भी कुछ प्रश्न हैं।सी # में कैशिंग है जो मेरे लिए सही दृष्टिकोण है?

  1. एक Sql कैश निर्भरता का उपयोग करते समय ... मुझे पता है कि आप जो टेबल पर नजर रखी जाएगी निर्दिष्ट कर सकते हैं, लेकिन अगर एक परिवर्तन उन तालिकाओं में से किसी एक को होता है यह पूरा कैश रीसेट करता है? मैं समझता हूं कि मैं उन तालिकाओं को कैश नहीं करना चाहता हूं जिनमें लगातार परिवर्तन होंगे लेकिन हम कैश किए गए तालिकाओं के अच्छे मुट्ठी भर के साथ समाप्त हो सकते हैं और भले ही प्रत्येक तालिका को केवल दिन में कुछ अपडेट मिल जाए, जो कैश के 50ish रीसेट हो सकते हैं दैनिक (8 घंटे की खिड़की)।

  2. मैं इस कैश को एक जीएसी डीएलएल के माध्यम से बना और बनाए रखूंगा। विभिन्न अनुप्रयोगों की एक बड़ी संख्या किसी भी समय उस जीएसी तक पहुंच जाएगी। क्या प्रत्येक एप्लिकेशन कैश की अपनी प्रति बनाए रखता है या क्या यह सिर्फ एक वैश्विक स्थान (या संभवतः प्रति ऐप पूल) में संग्रहीत है?

  3. क्या सर्वर पर कोई भौतिक स्थान है जहां मैं देख सकता हूं कि कैश वर्तमान में कितनी जगह ले रहा है? यह बेहद प्रासंगिक होगा यदि प्रत्येक एप्लिकेशन अपने कैश को बनाए रखता है क्योंकि यह बड़ी मात्रा में डिस्क स्पेस ले सकता है।

  4. क्या कैश को शारीरिक रूप से पुनर्निर्माण करने के लिए शारीरिक रूप से मजबूर करने का कोई तरीका है? मैं अपने मालिक को यह मानते हुए देख सकता था कि कैश किसी विशेष मुद्दे के लिए गलती थी और मुझे इसे मूल स्तर पर शासन करने में सक्षम होना चाहिए। नहीं "एक रिकॉर्ड बदल रहा है और कह रही है कि चाहिए कैश के पुनर्निर्माण" बल्कि "कर [कार्रवाई X] और जानते हुए भी कि जो कुछ भी कैश में किया गया था अब चला गया है" अपने जवाब के लिए और समय के लिए पहले से

धन्यवाद।

+0

आप दिलचस्प समस्याएं उठाते हैं, लेकिन मुझे पूरा यकीन नहीं है कि यह आपके प्रश्न के शीर्षक से कैसे संबंधित है। –

+0

और सी # टैग .. –

+0

2 मुझे डराता है .... – Phill

उत्तर

2
  1. SqlCacheDependency केवल पुरानी शैली एसक्यूएल 2000 दृष्टिकोण है, जो चलाता और मतदान पर निर्भर करता है में तालिकाओं नज़र रखता है। एसक्यूएल 2005+ विधि पंक्ति स्तर पर परिवर्तनों की निगरानी करता है, और सेवा ब्रोकर का उपयोग करता है। कैश ऑब्जेक्ट के स्तर पर, परिवर्तन दिए गए SqlCacheDependency (पूरे कैश नहीं) से जुड़े कैश प्रविष्टियों को अमान्य कर देंगे।

  2. प्रत्येक एप्लिकेशन में कैश की एक अलग प्रति है। यदि आपके पास एक ही डेटा साझा करने वाले कई ऐप्स हैं, तो आप एक अलग "कैशिंग सर्वर" बनाने पर विचार कर सकते हैं और डब्ल्यूसीएफ का उपयोग करके अपने ऐप्स को वहां से अपना डेटा प्राप्त कर सकते हैं - मूल रूप से आपके ऐप में एक और स्तर जोड़ें।

  3. आप कैश से संबंधित प्रदर्शन काउंटरों की एक जोड़ी देख सकते हैं, लेकिन आपकी चिंता डिस्क स्थान है, तो वहाँ, चिंता की बात नहीं है, क्योंकि ASP.NET कैश रैम में पूरी तरह से संग्रहीत किया जाता है। इसके अलावा, यदि रैम बहुत भरा हो जाता है, तो कैश की एक विशेषता यह है कि यह नई वस्तुओं के लिए जगह बनाने के लिए पुरानी/बार-बार संदर्भित वस्तुओं को छोड़ देगा।

  4. कैश को छोड़ने के लिए सबसे आसान तरीका यह है कि आप अपने एप्लिकेशन या ऐपपूल को रीसायकल करें (जो कि दिन में एक बार या तो डिफ़ॉल्ट रूप से होता है)।यदि आप कुछ और लक्षित करना चाहते हैं, तो आपको कैश से कुछ आइटम जबरन हटाने के लिए कुछ कोड लिखना होगा, या तो कैश का उपयोग करें। हटाएं() या लिंक की निर्भरताओं का उपयोग करना।

1
मेरे सिर के ऊपर से

:

  1. केवल उस तालिका की सामग्री को अवैध करार दिया जाएगा।
  2. प्रत्येक वेब एप्लिकेशन में इसका अपना कैश होता है।
  3. कैश स्मृति में संग्रहीत है। और इस सवाल का How to determine total size of ASP.Net cache? कैश आकार
  4. http://bit.ly/vsqNDl के बारे में देखते हैं कि यह मदद मिल सकती है
+0

यदि तालिका में विदेशी कुंजी हैं, तो क्या यह उन तालिकाओं के लिए कैश को भी अमान्य नहीं करेगा? मैंने एसक्यूएल कैश निर्भरताओं के साथ काम नहीं किया है इसलिए मैं इसके बारे में उत्सुक हूं और यदि ऐसा नहीं होता है तो मैं नई परियोजनाओं के लिए कुछ उपयोग देख सकता हूं। – Brian

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