html - MVC 2 - 我有一个使用大量 HTML 的控件。我该如何提高性能?

标签 html asp.net-mvc performance

我正在与迄今为止一直使用 Excel 的用户一起开发产品,他们希望我的 MVC 应用程序与此类似。 他们喜欢看到年假的视觉冲击力,所以我开发了一个可滚动的表格,如下所示; enter image description here

表格将有大约 300 个单元格,我可能有 15 个人来显示此信息,所以您可以看到这确实会变得非常大。 在构建控件之前我向他们提到会存在性能问题。但现在他们喜欢这个产品并希望它加载得更快。 如果我编写的代码可以重构,我不会感到惊讶。毫无疑问,无论如何它都可以写得更好,也许性能也可以提高,所以我将向您展示这一点。 但我怀疑真正的问题是 HTML 太多。我还有哪些其他选择?我还不熟悉 Silverlight 或 HTML5,尽管如果有人能为我提供一些好的链接,我很乐意研究它。 我的网页有这个标记;

<% if (Model.cvm != null && Model.cvm.Lines != null && Model.cvm.Lines.Count > 0)
   { %> 
        <table cellpadding="0" cellspacing="0">
            <tr>
                <td>
                    <table cellpadding="0" cellspacing="0" id="TeamNames"><!-- Table to display names of team members -->
                        <tr>
                            <td style="height:65px"></td>
                        </tr>
                        <% foreach (SHP.Models.CalendarViewModel.CalendarLine cl in Model.cvm.Lines)
                        {%>
                            <tr>
                                <td align="right"><%: cl.Name%></td>
                            </tr>
                        <%} %>
                    </table>
                </td>
                <td>
                    <div id="pageWidthCalendar"><!-- Table to display a scrollable grid of the annual leave calendar -->
                    <table id="ScheduledLeaveCalendar">
                        <%: Html.DisplayFor(x => x.cvm.Header1)%>
                        <%: Html.DisplayFor(x => x.cvm.Header2)%>
                        <%: Html.DisplayFor(x => x.cvm.Header3)%>
                        <%: Html.DisplayFor(x => x.cvm.Lines)%>
                    </table>
                    </div><!-- pageWidthCalendar - puts scrollbars on the calendar control -->
                </td>
            </tr>
        </table>

我的日历行显示模板具有此标记;

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<SHP.Models.CalendarViewModel+CalendarLine>" %>
<%@ Import Namespace="SHP.WebUI.HtmlHelpers" %>
<%@ Import Namespace="SHP.Models" %>

<tr>
    <% foreach (var item in Model.HtmlCellCollection) { %>
            <%: Html.CalendarCellClass(item)%>
    <% } %>
</tr>

其他显示模板类似。

我的 CalendarCellClass 辅助方法看起来像;

    public static MvcHtmlString CalendarCellClass(this HtmlHelper helper, CalendarViewModel.CalendarCell _cell)
    {
        TagBuilder td_Outer = new TagBuilder("td");
        if (_cell.MorningOnlyFlag == true || _cell.AfternoonOnlyFlag == true)
        {
            td_Outer.InnerHtml = GetHalfDayTable(_cell);
        }
        else
            td_Outer.MergeAttribute("class", _cell.HtmlCellClass);

        return MvcHtmlString.Create(td_Outer.ToString());
    }

最佳答案

正如其他人所指出的,分析会很有用。

根据 Internet Explorer 的“F12 开发人员工具”或 Firebug、YSlow、PageSpeed 或某些此类工具绘制的请求时间图表将会很有用。

服务器端实际创建 View 的时间也会有所帮助。也可能是客户端渲染的问题,这就是问题所在。

请记住,在互联网应用程序中,感知通常与“真实性能”一样重要,AJAX 化可能会通过在之前加载页面的其余部分来提高他们的感知 日历本身。您可以通过仅传输 JSON 来加快下载速度和服务器端速度,并使用 jquery 在客户端上构建 UI。但如果客户端渲染是主要问题所在,那么这将无济于事。

关于html - MVC 2 - 我有一个使用大量 HTML 的控件。我该如何提高性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7753433/

相关文章:

javascript - X 和 Y 到某个目的地如何制作动画

c# - 解释 Angular 2 中 MVC 错误的最佳实践

.net - CS0012 : The type 'System.Web.Routing.RouteValueDictionary' is defined in an assembly that is not referenced

performance - 为什么交叉应用比内连接快?

javascript - 将 Javascript 图像对象直接分配给页面

html - CSS:图像粘在文档的右下角

asp.net-mvc - User.Identity.IsAuthenticated 注销 asp.net mvc 后为真

mysql - 大量 1kB 数据 block 的数据库(MySQL?)

python - 为什么 Python 运行 C++ 函数比 C++ 通过其 main() 函数运行自己的函数更快?

javascript - 字段值的乘法