【问题标题】:ASP.NET MVC Performance after publishing on IIS在 IIS 上发布后的 ASP.NET MVC 性能
【发布时间】:2012-11-07 10:58:22
【问题描述】:

在我的应用程序站点中,我有一个创建和生成 Excel 文件的控制器操作:从项目列表中,它通过 for 循环写入每个项目的每个字段。 简化示例(因为我有大约 30 个字段):

String az = "";
az = az + "<table border=\"1\">";
az = az + "<tr>";
az = az + "<th>Field 1</th>";
az = az + "<th>Field 2</th>";
for (int i = 0; i < items.Count(); i++){
     az = az + "<tr>";
     az = az + "<td>" + items.ElementAt(i).Field1+ "</td>";
     az = az + "<td>" + items.ElementAt(i).Field2+ "</td>";
     az = az + "</tr>";
}
az = az + "</table>";

现在,当我有几行时,没问题。 当我有大量行时,生成文件需要一段时间。这在 localhost 上不是问题,但是在我在 IIS 上发布站点后,它需要 7 倍(时间)。

例子:

加载 250 行:本地主机上 0,8s,IIS 上 4s

加载 615 行:本地主机上 4s,IIS 上 21s

加载 950 行:本地主机上 7s,IIS 上 38s

加载 1300 行:本地主机上 15s,IIS 上 104s

有谁知道问题出在哪里?我是否必须在 IIS 站点上更改/设置一些变量?如果我还没有,有没有办法优化 IIS 的性能?

谢谢,希望有人能帮帮我!

【问题讨论】:

  • 这不会影响你的表现,但你应该使用 StringBuilder 来连接字符串。
  • “生成 Excel 文件”是什么意思?您是否正在自动化 Excel 并创建实际的 XLS 或 XLSX 文件?您是否使用其他工具来创建文件?还是你在做其他事情?
  • @Lukas 不,你完全错了:确实,它确实扼杀了我的表现。现在它在不到 1 秒的时间内构建字符串,无论在 localhost 和 IIS 上的行数是多少!非常感谢!
  • 哇 - 所以影响比预期的要大得多。很高兴听到它现在很快;-)

标签: asp.net-mvc performance iis for-loop localhost


【解决方案1】:

首先,如果您必须像这样构建您的 html,那么至少使用字符串构建器

var az = new StringBuilder();
az.append("<table border=\"1\">");
az.append("<tr>");
//etc
return az.ToString();

但是,完全重新考虑这种方法并考虑使用 Razor 视图而不是编译您的 html 可能是值得的。当然,这取决于您可能有的其他考虑因素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 1970-01-01
    相关资源
    最近更新 更多