1

我正在开发的应用程序有一个医生查询列表。这是一个带有 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>

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

  1. 我是否应该缓存医生列表,以便每次加载视图时都不需要继续加载 5k 对象?该列表正在从数据库中加载。这个列表永远不会或很少改变,所以不用担心。
  2. 有没有办法缓存html输出?
  3. 对数据进行分页,但我认为他们需要一个自上而下的列表。滚动比继续单击下一步更快。

我怎样才能在这里提高性能?

4

1 回答 1

13

您真正应该做的只是首先从数据库中检索所需的医生。5000 项的清单是没有意义的,没有人会看它。

您可以实现一个分页系统,该系统将页码、页面大小和排序标准等内容传递给存储过程或数据层方法。然后,此方法将仅从您的数据库中检索适用的项目。通过这种方式,您将节省 DB 处理时间、网络传输时间、业务对象创建时间和渲染时间。

于 2012-11-13T14:46:36.627 回答