我们有一个非常大的ASP.NET MVC站点,显示页面需要6秒钟。我使用了Glimpse和MiniProfier,两人都告诉我视图的渲染是罪魁祸首(需要5.9秒)。控件和视图都称为“列表”。
我删除了_Layout.cshtml和List.cshtml的整个标记,但页面仍然需要6秒才能加载!我看了一下global.asax和App_start中的所有类,那里没有任何错误。
当我看到Glimpse时,它说“ViewResult.ExecuteResult()”需要5.9秒才能运行。我假设调用此方法来呈现视图,但我很惊讶,因为我删除了所有标记,因此无法呈现任何内容。
有谁可以指导我如何诊断这个网站?
答案 0 :(得分:3)
如果我们谈论List,我可以假设(因为我们没有任何代码)它是通用的和IEnumerable。这意味着它是懒惰的。当您创建列表(或从某处获取它)时,您不会实际调用数据库/外部源。但是当你访问属性时,会执行调用,这就是渲染列表需要这么长时间的原因。
因此,解决方案是您不需要专注于列表的渲染,而是专注于此列表的数据源。数据来自哪里?例如,如果您使用数据库,则可能必须创建索引以提高查询的选择速度。