भविष्य की पीढ़ियों के लिए मेरे अपने प्रश्न का उत्तर देना ....
हम 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);
}
}
स्रोत
2011-05-27 15:39:32
क्या आप सुनिश्चित हैं कि यह एमवीसी है जो दृश्य को कैशिंग कर रहा है, न कि आपका ब्राउज़र? ctrl-F5 यह देखने के लिए कि आपका दृश्य कहलाता है या नहीं। –
प्रश्न और उत्तर के लिए धन्यवाद, डीएलएल के अंदर एक दृश्य होने पर, यह मेरी बदसूरत कैशिंग समस्या हल हो गई! –