1

私のアプリケーション サイトには、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 行の読み込み: localhostで0.8、IISで 4 秒

615 行の読み込み:ローカルホストで4秒、IISで21 秒

950 行の読み込み: localhostで7 秒、IISで38 秒

1300 行の読み込み: localhost で15 秒、IISで104秒

誰が問題が何であるか知っていますか?IIS サイトでいくつかの変数を変更/設定する必要がありますか? まだ行っていない場合に備えて、IIS のパフォーマンスを最適化する方法はありますか?

ありがとう、誰かが私を助けてくれることを願っています!

4

1 に答える 1

0

まず、このように html を構築する必要がある場合は、少なくとも文字列ビルダーを使用してください。

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

ただし、このアプローチを完全に再考し、html をコンパイルする代わりに Razor ビューを使用することを検討する価値があるかもしれません。もちろん、これは他の考慮事項に依存します。

于 2012-11-19T13:56:19.913 に答える