发布模式下的FindView始终使用useCache = true

我在网上看到,当MVC在发布模式下编译时,IViewEngine接口的FindView和FindPartialView方法总是用useCache = true调用。这是真的?如果是,它是MVC中的错误吗?如果它不是一个bug,背后的原因是什么?     
已邀请:
是。这是真的。原因是它使应用程序运行得更快。如果您没有使用缓存,则每次必须查找已找到的视图时,都必须扫描文件系统以查找与视图名称匹配的内容。     
查看VirtualPathProviderViewEngine的构造函数(它是RazorViewEngine的基础):
   protected VirtualPathProviderViewEngine() 
   {
        if (HttpContext.Current == null || HttpContext.Current.IsDebuggingEnabled) { 
            ViewLocationCache = DefaultViewLocationCache.Null;
        }
        else {
            ViewLocationCache = new DefaultViewLocationCache(); 
        }
    } 
可以看到,虽然调试Razor确实使用了NullLocationCache,但是,如果检查ViewEnginesCollection.FindView()和ViewEnginesCollection.FindPartialView(),您将看到使用useCache在true中搜索一次视图,第二次使用useCache搜索视图在假:
        return Find(e => e.FindView(controllerContext, viewName, masterName, true),
                    e => e.FindView(controllerContext, viewName, masterName, false)); 
    

要回复问题请先登录注册