मेरे पास एक बड़ा डेटा सेट है जो दिन में एक बार अपडेट किया जाता है। मैं उस डेटा पर एक महंगी क्वेरी के परिणामों को कैशिंग कर रहा हूं लेकिन मैं हर दिन उस कैश को अपडेट करना चाहता हूं। मैं दैनिक अंतराल पर अपने कैश फिर से लोड करने CacheItemRemovedCallback का उपयोग कर विचार कर रहा हूँ, लेकिन मैं निम्नलिखित चिंताओं था:कैशइटम रीमेड कैलबैक का उपयोग करना उचित कब है?
- नहीं है यह संभव CacheItemRemovedCallback (मेरी समाप्ति से पहले कहा जा सकता है कि स्मृति से बाहर चल रहा है के मामले में)? जिसका मतलब है कि इसे तुरंत लोड करना अच्छा विचार नहीं लगता है।
- क्या कैशइटम रीमेड कॉलबैक को आइटम के पहले या बाद में वास्तव में हटा दिया जाता है? यदि यह बाद में है, तो क्या यह सैद्धांतिक रूप से समय की अवधि नहीं छोड़ता है जहां कैश अनुपलब्ध होगा?
क्या ये चिंताएं प्रासंगिक हैं और यदि आपके कैश को पुनः लोड करने के लिए कैशइटम रीमेड कॉलबैक का उपयोग करना एक बुरा विचार है, तो यह कब उपयोगी होता है?
ठीक है, 'कैशइटम रीमेड कैलबैक' के लिए अन्य व्यावहारिक उपयोग हैं - केवल लॉगिंग नहीं। उदाहरण के लिए कहें कि कैश किए गए आइटम को हटाए जाने पर कैश किए गए आइटम द्वारा बाहरी संदर्भों को रखा जाता है जिन्हें आप निपटाना चाहते हैं। यदि आप CacheItemRemovedCallback का उपयोग नहीं करते हैं तो आपको केवल कचरा कलेक्टर पर भरोसा करना होगा जो निष्पादित होने पर कोई गारंटी प्रदान नहीं करेगा (यदि कभी भी आपके कार्यक्रम के जीवन के दौरान)। –