【发布时间】:2012-03-04 06:06:15
【问题描述】:
想了解Razor引擎如何执行以@开头的c#代码的顺序。
我试图查看执行控制器和执行视图的不同时间。因此,我创建了这个非常简单的 ASP.NET MVC 应用程序。我将时间存储在控制器中的ViewBag 变量中并显示视图,我还在视图中显示当前时间。
控制器有这个:
public ActionResult Index()
{
ViewBag.ProcessingTime = DateTime.Now;
return View();
}
视图有这样的:
Processing time: @ViewBag.ProcessingTime<br />
@{
int i = 0;
do
{
i++;
<text>@i<br /></text>
}
while (i < 1000000);
}
Render time: @DateTime.Now
结果是这样的:
Processing time: 03/03/2012 04:16:48 p.m.
1
2
3
4
[...]
999998
999999
1000000
Render time: 03/03/2012 04:16:48 p.m.
为什么在执行if时向我显示网页显然需要时间,Controller 中的 ProcessingTime 和视图中的 RenderTime 相同?
【问题讨论】:
-
@AndrewBarber - 绘制所有一百万行文本确实需要时间。
-
@TravisJ 此代码中没有任何“绘图”。
-
@Andrew 我想是因为向我展示该页面需要很多时间。现在我明白延迟是因为浏览器。不显示任何内容,但使用更大的数字我可以看到不同的时间。谢谢!
-
@RicardoPolo Gotcha;我什至无法想象你为什么认为这需要很长时间,因为我只考虑运行速度非常快的代码,而不是在浏览器中下载/显示结果所需的时间。跨度>
-
@RicardoPolo,我建议您阅读YSlow Best Practices 以优化您的网站。您将意识到大部分时间都在传输和渲染中丢失,而不是在服务器上。您可以通过遵循一些规则轻松获得性能,而不是在服务器上浪费宝贵的时间和精力来赢得什么 - 20 毫秒的渲染?而您在客户端上浪费了 5 秒。许多人专注于优化他们的服务器端代码,却没有意识到这不是问题所在。当然这并不意味着...
标签: asp.net-mvc asp.net-mvc-3 razor