如何减少此视图的渲染时间?

时间:2014-06-26 20:13:20

标签: c# asp.net-mvc

我的视图渲染需要很长时间。它由一个填充了大约90个表记录的表组成。 dB调用运行得非常快,但显示所有记录需要一段时间。以下是导致缓慢的代码:

<table>               
    @for (int i = 0; i < Model.PositionEdits.Count; i++)
    {
        <tr>
            <td>
                @Html.DisplayFor(x => x.PositionEdits[i].PositionID)
                @Html.HiddenFor(x => x.PositionEdits[i].PositionID)
            </td>
            <td>
                @Html.DisplayFor(x => x.PositionEdits[i].PositionDescr)
                @Html.HiddenFor(x => x.PositionEdits[i].Description)
            </td>
            <td>
                @*editable*@
                @Html.DropDownList("Position",
                    new SelectList(Model.Positions),
                    Model.PositionEdits[i].Position)
                @Html.HiddenFor(x => x.OldPositions[i].Position)
                @Html.HiddenFor(x => x.PositionEdits[i].Position)
            </td>
        </tr>
    }
</table>  

我意识到分页可以解决我的问题,但我希望在同一页面上显示所有~90条记录。有没有办法可以改善这种观点以减少加载时间?

1 个答案:

答案 0 :(得分:1)

首先,如果您仍处于本地开发阶段,特别是如果您在Visual Studio中使用调试,那么担心页面加载时间等问题绝对是错误的。您正在处理一个非常轻量级的单头服务器,由于与Visual Studio及其工具之间的来回集成而导致大量开销。页面加载时间毫无意义。

一旦您可以使用某些东西,就可以将其部署到生产就绪的服务器环境中以测试性能。除非您在具有实际RAM和其他资源的专用Web服务器上运行完整的IIS,并且计划投入到生产中的网站,否则任何性能测量都没有意义,因为它不在上下文中。 / p>

如果它仍然很慢,我没有看到它可能的任何方式(在具有完整IIS且具有适量系统资源的实际Web服务器上的90条记录是微不足道的),你和#39;我需要调查哪个部分真的让你失望。在请求的初始传输,数据库查询,生成响应的实际服务器时间,将响应发送回用户的时间,浏览器呈现HTML和CSS所花费的时间,问题上涉及的时间请求/接收对CSS,JS文件和图像等其他资源的响应,以及在页面上执行任何JS的时间。

使用浏览器的开发者工具(Chrome在这方面有一个特别好的设置),您应该能够看到一个甘特图,表明每个请求的发布时间以及获取响应所需的时间。这只是讲述故事的一部分。一旦找到需要查看的问题区域,您将需要其他工具来深入挖掘。我个人使用Glimpse。这将为您提供非常详细的信息,说明流程的每个部分花了多长时间,以及您的应用程序的哪些部分会降低您的速度。解决问题需要采取的步骤在很大程度上取决于实际导致问题的原因,到目前为止仍然是一个谜。