मैं asp.net MVC का उपयोग कर रहा है, इसलिए मैं अपने नियंत्रक में ऐसा किया
if (User.Identity.IsAuthenticated) {
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.Now.AddMinutes(-1));
Response.Cache.SetNoStore();
Response.Cache.SetNoServerCaching();
}
else {
Response.Cache.VaryByParams["id"] = true; // this is a details page
Response.Cache.SetVaryByCustom("username"); // see global.asax.cs GetVaryByCustomString()
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Server);
Response.Cache.SetValidUntilExpires(true);
}
कारण मैं इसे इस तरह से (बजाय एलान के तौर पर की) मैं भी क्षमता की जरूरत इसे चालू करने के था और कॉन्फ़िगरेशन के माध्यम से बंद (यहां नहीं दिखाया गया है, लेकिन मेरे कॉन्फ़िगर चर के लिए अगर कोई अतिरिक्त जांच है)।
तुम अब भी उपयोगकर्ता नाम के हिसाब से बदलती जरूरत है, और आप इस कोड को जब एक लॉग इन उपयोगकर्ता प्रकट होता है में निष्पादित नहीं होगा। मेरा GetVaryByCustomString फ़ंक्शन "अज्ञात" लौटाता है जब प्रमाणित नहीं होता है या उपयोगकर्ता नाम उपलब्ध होने पर नाम देता है।
क्या आपको कभी इस समस्या का समाधान मिला है? हमारे पास एक समान आवश्यकता है जो अलग-अलग है, कस्टम का जवाब नहीं है। –
वर्तमान में मैं कोड-बैक समाधान का उपयोग करता हूं, जहां मैं आसानी से निर्णय ले सकता हूं कि मैं पृष्ठ को कैश करना चाहता हूं या नहीं। यदि उपयोगकर्ता लॉग इन नहीं है, तो मैं कैश करता हूं। यदि उपयोगकर्ता लॉग इन है, तो पूरे पृष्ठ के लिए कैश अक्षम है (और कैश केवल इसके बजाय "स्थिर" भागों)। मुझे नीचे दिए गए उत्तर के बाद, मैंने कोड-बैक के बिना समाधान की खोज की, लेकिन कुछ भी उपयोगी नहीं मिला। आखिरकार, कोड-बैक समाधान भी बहुत स्पष्ट है और शुद्ध एएसपी.NET पर बड़े नुकसान नहीं हैं। –
क्या आप अपना कोडबींड समाधान साझा कर सकते हैं? आप इस तरह कैश को कैसे नियंत्रित करते हैं? –