首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Html.RenderPartial慢

Html.RenderPartial慢
EN

Stack Overflow用户
提问于 2015-04-21 14:22:08
回答 3查看 1.2K关注 0票数 6

我们的网络应用程序包含了几十个部分的视图,其中一些是其他的孩子。我们注意到应用程序在第一次加载时速度很慢,初始化它第一次调用的每个视图需要0.5到1秒。我追踪了时间,发现这个:

代码语言:javascript
复制
Html.RenderPartial("~/Full/Relative/Path/To/View.cshtml", null);  

即使视图是绝对空的,也要花费大约1秒时间。与此同时,这方面:

代码语言:javascript
复制
var view = ViewEngines.Engines.FindPartialView(
ViewContext.Controller.ControllerContext, "~/Full/Relative/Path/To/View.cshtml");

花费1毫秒,因此没有时间花在寻找文件。

问题:

  1. 视图编译器花费这么长时间是正常的吗?
  2. 是否有其他方法可以快速进行第一次调用,但不使用csproj中的指令预编译视图?

ps:奇怪的是,相同的视图在应用程序开发开始时加载得更快。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-04-21 14:29:00

您所看到的延迟完全取决于第一次使用时对视图的初始编译。速度将下降到服务器(处理器和驱动器速度,内存,使用等)。

您要么接受它,要么将您的项目设置为预编译视图,以避免在运行时编译。

票数 7
EN

Stack Overflow用户

发布于 2015-04-22 04:32:46

嗯,TrueBlueAussie的答案是正确的,但我有一些补充。

在编译视图时(在应用程序编译期间或以后,取决于项目配置),编译器会创建*..dll,每个包含视图的文件夹一个。当应用程序第一次显示视图时,IIS服务器将加载包含该视图的整个DLL。在这个过程中,您可以很容易地发现它在VS中观察输出窗口,这可能需要一秒钟甚至更长的时间。加载DLL后,将快速呈现位于同一文件夹中的所有其他视图。因此,您拥有的视图文件夹越多,IIS加载它们和花费时间的频率就越高。希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2015-04-22 05:21:28

我还将补充如下:

代码语言:javascript
复制
Html.RenderPartial("~/Full/Relative/Path/To/View.cshtml", null);  

实际上是将html呈现给流。其中as:

代码语言:javascript
复制
var view = ViewEngines.Engines.FindPartialView(
  ViewContext.Controller.ControllerContext, "~/Full/Relative/Path/To/View.cshtml");

只返回一个IView,它不执行视图。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29774981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档