2011-03-14 10 views
5

में दृश्य कैशिंग अक्षम करें मैं पोर्टेबल क्षेत्रों का उपयोग करके कुछ देव काम कर रहा हूं इसलिए मेरे पास VirtualPathProvider ओवरराइड है।एएसपी.नेट एमवीसी ओवरराइड वर्चुअलपैथप्रोवाइडर

मेरा public override bool FileExists(string virtualPath) केवल कुछ ही मिनटों के लिए जाना जाता है, जिसका अर्थ है कि एमवीसी विचारों को कैश कर रहा है।

यह शायद उत्पादन में बहुत अच्छा है लेकिन मैं यह नहीं समझ सकता कि इसे देव में कैसे बंद किया जाए। मैं दृश्य के प्रत्येक उपयोग पर कॉल करने के लिए VirtualPathProvider चाहता हूं।

कोई सुझाव?

+0

क्या आप सुनिश्चित हैं कि यह एमवीसी है जो दृश्य को कैशिंग कर रहा है, न कि आपका ब्राउज़र? ctrl-F5 यह देखने के लिए कि आपका दृश्य कहलाता है या नहीं। –

+0

प्रश्न और उत्तर के लिए धन्यवाद, डीएलएल के अंदर एक दृश्य होने पर, यह मेरी बदसूरत कैशिंग समस्या हल हो गई! –

उत्तर

6

भविष्य की पीढ़ियों के लिए मेरे अपने प्रश्न का उत्तर देना ....

हम GetCacheDependency कॉल अधिभावी सुनिश्चित करना है कि दृश्य कैश्ड कभी नहीं समाप्त हो गया। (हम मैन्युअल रूप से विचार कैश करते हैं)। हमें एक FakeCacheDependency बनाना था जो हमें हमारे कैश से अंतिम संशोधित दिनांक का उपयोग करने देता है।

हमारे आवेदन में, हमारे आभासी विचारों को CondorVirtualFiles कहा जाता है। (एक दृश्य इंजन बनाते समय, आपको इसे एक अच्छा नाम देना होगा।)

public override System.Web.Caching.CacheDependency GetCacheDependency(string virtualPath, System.Collections.IEnumerable virtualPathDependencies, DateTime utcStart) 
     { 
      var view = this.GetFile(virtualPath); 
      if (view is CondorVirtualFile) 
      { 
       FakeCacheDependency fcd = new FakeCacheDependency((view as CondorVirtualFile).LastModified); 
       return fcd; 
      } 
      return base.GetCacheDependency(virtualPath, virtualPathDependencies, utcStart); 
     } 



public class FakeCacheDependency : System.Web.Caching.CacheDependency 
    { 
     public FakeCacheDependency(DateTime lastModified) 
     { 
      base.SetUtcLastModified(lastModified); 
     } 
     public FakeCacheDependency() 
     { 
      base.SetUtcLastModified(DateTime.UtcNow); 
     } 
    } 
+0

+1 धन्यवाद !!! बस कुछ विचार साझा करना चाहता था। आपको 'GetFileHash()' विधि को ओवरराइड करना होगा। इसके अलावा आप 'FakeCacheDependency' इंस्टेंस' के बजाय 'null' वापस कर सकते हैं। और मुझे एक सहायक संसाधन मिला: http://blog.rocketbase.co.uk/2011/04/asp-net-mvc-virtual-path-provider/ – Warlock

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