2011-03-04 69 views

回答

1

是的。這是真的。推理是因爲它使應用程序運行得更快。如果您沒有使用緩存,那麼每次您必須找到您已經找到的視圖時,您必須掃描文件系統以查找與視圖名稱匹配的文件系統。

+0

好,這將是有問題的。如果我沒有找到使用緩存的匹配,我應該嘗試在沒有它的情況下找到它。爲什麼會用相同的值調用同一個方法兩次?爲什麼這個工作與Debug模式有什麼不同?首先用true調用它,如果沒有找到,用false調用它。 – 2011-03-04 20:29:36

+0

這與調試/發佈模式無關。 – smartcaveman 2011-03-05 12:14:34

+0

您可以從http://aspnet.codeplex.com/下載ASP.NET MVC的源代碼,以便親自查看。 – smartcaveman 2011-03-05 12:16:04

1

望着VirtualPathProviderViewEngine的構造函數(這是RazorViewEngine基地):

protected VirtualPathProviderViewEngine() 
    { 
     if (HttpContext.Current == null || HttpContext.Current.IsDebuggingEnabled) { 
      ViewLocationCache = DefaultViewLocationCache.Null; 
     } 
     else { 
      ViewLocationCache = new DefaultViewLocationCache(); 
     } 
    } 

人們可以看到,在調試時剃刀確實使用NullLocationCache,但是,如果你檢查ViewEnginesCollection.FindView()和ViewEnginesCollection.FindPartialView(),你會看到視圖在真實和虛假第二次與useCache將搜索曾經與useCache將:

 return Find(e => e.FindView(controllerContext, viewName, masterName, true), 
        e => e.FindView(controllerContext, viewName, masterName, false)); 
相關問題