如何提高具有5000个对象的列表的性能,这些对象返回到视图并在asp.net mvc中输出?

Cha*_*lds 1 c# asp.net asp.net-mvc

我正在开发的应用程序有一个医生查找列表.这是一个简单的表单字段,它带有一个Id,这个查找将允许用户查看整个医生列表并添加一个到该字段.我们在控制器中加载列表,然后将列表返回到视图,其中数据在表格中格式化.

<div id="physicians-selection-dialog">
    <table id="list">
    <thead>
        <tr>
            <td>#</td>
            <td>First Name</td>
            <td>Last Name</td>
            <td>Department</td>
            <td>State Lic</td>
        </tr>
    </thead>
    <tbody>
    @foreach (var physician in Model.Physicians)
    {
        <tr><td><button class="list-select" value="@physician.PhysFxId">@physician.PhysFxId</button></td><td>@physician.PhysFirstName</td><td>@physician.PhysLastName</td><td>@physician.PhysDepartment</td><td>@physician.PhysStateLic</td></tr>
    }
    </tbody>
    </table>
</div>
Run Code Online (Sandbox Code Playgroud)

用户单击一个链接,该链接显示带有上述html的jQuery对话框,适用于所有5k医生.这很好,但渲染速度极慢.我需要提高性能但不确定我应该做什么?

  1. 我应该缓存医生列表,所以每次加载视图时都不需要继续加载5k对象吗?该列表正在从DB加载.这个列表永远不会或很少改变,所以这不是一个担心.
  2. 有没有办法缓存html输出?
  3. 分散数据,但我认为他们想要一个自上而下的列表.滚动速度快于继续点击下一步.

我怎样才能提高性能呢?

Eri*_*rix 13

你应该做的只是首先从数据库中检索所需的医生.5000个项目的列表毫无意义,没有人会仔细研究.

您可以实现将页面编号,页面大小和排序条件等内容传递给存储过程或数据层方法的分页系统.然后,此方法将仅从您的数据库中检索适用的项目.您将以这种方式保存数据库处理时间,网络传输时间,业务对象创建时间和渲染时间.