На моем сайте приложения у меня есть действие контроллера, создающее и генерирующий файл Excel: из списка элементов он записывает каждое поле каждого элемента через цикл. Упрощенный пример (сог у меня есть ~ 30 полей):ASP.NET MVC Производительность после публикации в IIS
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 он занимает до 7x (время).
Пример:
Загрузка 250 строк: 0,8s на локальном хосте, 4s на IIS
Загрузка 615 строк: 4s на локальном хосте, 21s на IIS
Загрузка 950 строк: 7s на локальном хосте, 38s на IIS
Загрузка 1300 строк: 15s на локальном хосте, 104S на IIS
Кто-нибудь знает, в чем проблема? Нужно ли мне изменять/устанавливать какую-либо переменную на сайте IIS? В случае, если я этого не делаю, есть ли способ оптимизировать работу в IIS?
Спасибо, надеюсь кто-то может мне помочь!
Это не убьет вашу производительность, но вы должны использовать StringBuilder для конкатенации строк так же, как и вы. –
Что вы подразумеваете под «генерированием файла Excel»? Вы автоматизируете Excel и создаете фактический файл XLS или XLSX? Используете ли вы другой инструмент для создания файла? Или вы делаете что-то еще? –
@ Lukas Нет, вы совершенно неправы: действительно, это убивает мое выступление. Теперь он строит строку менее чем за 1 секунду, независимо от количества строк, как на localhost, так и на IIS! Большое спасибо! – Jack88PD