这是我第一次使用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 webforms但是绑定到gridview而不是它非常快,它将所有记录加载到同一个表中第二。
我真的找不到任何在线帮助提高速度的东西。有什么关于这样的剃刀语法我应该避免吗?或者我应该坚持使用webforms网站,因为它似乎更快?
答案 0 :(得分:1)
如果要实现IQueryable接口(延迟加载),您的For循环可能会触发其他查询。实体框架/ Linq To Sql有时可以获取比显而易见的更多数据。
如果您尚未对此进行排除,我衷心建议您获取与您的项目相关的Glimpse nuGet软件包。这将准确显示正在生成的查询。您还可以查看SQL管理工作室中的执行计划,但Glimpse加载项非常好。
Glimpse包堆叠在一起,但这正是我目前使用的:
Glimpse Core 一瞥ADO 一瞥ASP.NET 一瞥EF6 Glimpse MVC