繁体   English   中英

使用razor语法时MVC5奇怪地降低了性能

[英]MVC5 strangely slow performance when using razor syntax

这是我第一次使用MVC。 我正在尝试为MVC5页面创建一个搜索页面,该页面将创建包含一些基本信息(例如姓名,性别等)的表。这是我要在有人按下搜索按钮时使用AJAX调用的局部视图。 因此,在我的控制器上,我使用linq查询远程sql数据库,如果有人不放置过滤器,则最多可以检索大约2k条记录。 linq to sql查询的速度相当快(我尝试仅返回JSON而不是视图,并且实际上是即时的),但是在尝试渲染视图时存在问题。

现在我正在做类似的事情:

    @foreach(var item in Model){
        <tr>
               <td>@item.name<td>
               <td>@item.gender<td>
               ... etc.
        <tr>
    }

但是,这太慢了。 在chrome上,加载可能需要30秒到一分钟以上的时间。 测试IE10时,它永远不会加载,这是一个问题,因为需要IE10兼容性。 我正在使用类似的语法来动态加载带有过滤器的自定义下拉列表,这使得主页加载大约需要两秒钟。 我认为这是@foreach行的问题,因为将其限制为10条记录会使它在4秒钟内加载,这仍然非常慢,但效果更好。 我正在本地主机上运行此文件。我有一个旧版本的网站使用相同的SQL查询从ASP Web表单运行,但绑定到了gridview,并且速度非常快,它将所有记录加载到同一目录下的同一表格中第二。

我真的找不到任何在线帮助提高速度的东西。 我应该避免关于剃刀这样的语法吗? 还是我应该坚持使用Webforms网站,因为它似乎更快?

如果要实现IQueryable接口(延迟加载),则For循环可能会触发其他查询。 有时,实体框架/ Linq To Sql可以捕获比显而易见的更多的数据。

如果您还没有排除这种情况,我衷心建议您获取与您的项目相关的Glimpse nuGet软件包。 这将准确显示正在生成的查询。 您也可以在SQL Management Studio中查看执行计划,但是Glimpse加载项非常好。

Glimpse软件包彼此堆叠,但这是我目前正在使用的软件包:

一瞥核心一瞥ADO一瞥ASP.NET一瞥EF6一瞥MVC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM