2013-02-07 51 views
5

HttpContext कक्षा Cache और Items गुणों के बीच क्या अंतर है?HttpContext के कैश और आइटम गुणों के बीच क्या अंतर है?

MSDN प्रलेखन से:

कैश
वर्तमान आवेदन डोमेन के लिए कैश वस्तु हो जाता है।

आइटम
मुख्य/मान संग्रह है कि HTTP अनुरोध दौरान संगठित करने और एक IHttpModule अंतरफलक और एक IHttpHandler इंटरफ़ेस के बीच सूचना साझा करने के लिए इस्तेमाल किया जा सकता हो जाता है।

मैं वास्तव में समझ नहीं पा रहा हूं कि वह दस्तावेज क्या समझाने की कोशिश कर रहा है।

एएसपी.नेट वेब अनुप्रयोगों पर काम करते समय, मैंने डेटा के प्रति-अनुरोध कैशिंग के लिए अक्सर Items का उपयोग किया है ताकि एकाधिक उपयोगकर्ता नियंत्रण डेटाबेस से उसी डेटा को देख सकें। यह this article में वर्णित है।

आज हालांकि, मैं Cache संपत्ति के उपयोग के दौरान आया, जो प्रति-अनुरोध कैशिंग जैसा दिखता था। मैंने अंतर को समझने की कोशिश की लेकिन इन दोनों की तुलना में कोई अच्छा दस्तावेज नहीं मिला। तो मैं जानना चाहता हूं ...

एचटीपीकॉन्टेक्स्ट के कैश और आइटम गुणों के बीच क्या अंतर है? कृपया के उदाहरणों के साथ विस्तृत करने का प्रयास करें क्यों आप अलग-अलग वास्तविक दुनिया परिदृश्यों में एक दूसरे का उपयोग करना चुनेंगे।

उत्तर

10

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

यह इस बात पर निर्भर करता है कि आप कितनी देर तक डेटा जीना चाहते हैं। मैं ईएफ में ऑब्जेक्ट कॉन्टेक्स्ट या डीबीकॉन्टेक्स्ट जैसी चीज़ों को स्टोर करने के लिए आइटम का उपयोग करता हूं, जिसे मैं केवल उस दिए गए अनुरोध के लिए साझा करना चाहता हूं। लेकिन संदर्भ तालिका डेटा सभी उपयोगकर्ता कई अनुरोधों का उपयोग करेंगे, इसलिए कैशिंग बेहतर होगी।

+0

'कैश' डेटा को विभाजित करने के लिए उपयोग किए गए अनुरोध के बारे में कुछ भी है? हमारे पास एक वेब-ऐप है जो कई अलग-अलग डोमेन, एक डोमेन प्रति उपयोगकर्ता पर अनुरोध करता है। ऐसा लगता है कि मैं जो कोड बनाए रख रहा हूं, वह प्रति उपयोगकर्ता कैश डेटा को अलग करने के लिए अलग-अलग डोमेन पर निर्भर है। मेरा मतलब यह है कि उपयोगकर्ता विशिष्ट डेटा को बिना किसी उपयोगकर्ता आईडी या कुंजी में कैश में संग्रहीत किया जा रहा है। यह कैसे काम कर सकता है? साथ ही, जिस आलेख से मैंने लिंक किया है, वे 'आइटम' कुंजी में उपयोगकर्ता आईडी का उपयोग कर रहे हैं, जो मुझे लगता है कि 'आइटम' कई उपयोगकर्ताओं के अनुरोधों में साझा किया जाता है। अब मैं पहले से अधिक उलझन में हूं ... –

+0

कैश या सत्र, क्योंकि सत्र उपयोगकर्ता विशिष्ट है। आप उपयोगकर्ता की आईडी को कैश कुंजी में जोड़कर कैश उपयोगकर्ता-विशिष्ट भी बना सकते हैं ... फिर प्रत्येक उपयोगकर्ता के पास अपनी कैश-विशिष्ट प्रविष्टियां हो सकती हैं। आपके द्वारा प्रदान किए गए आलेख में, उनके द्वारा प्रदान किए गए दृष्टिकोण ने एक तरीका दिया है जिसे आप HttpContext में डेटा साझा कर सकते हैं। कई उपयोगकर्ता नियंत्रण या कस्टम नियंत्रणों के लिए यह केवल उस उपयोगकर्ता के वर्तमान अनुरोध के भीतर है। आइटम संग्रह तब प्रत्येक अनुरोध पर बन जाता है, इसलिए डेटा अगले अनुरोध पर फिर से उपलब्ध होता है। –