Я, очевидно, случайно создал зверя, который был бы признателен за идеи о том, где искать альтернативы или как я мог бы определить проблему. (Это приложение на C # .Net 3.0.)
У меня есть главная страница, которая содержит 4 текстовых поля. Когда пользователь вводит текст в одно из текстовых полей, он запускает вызов JavaScript, чтобы обновить страницу результатов поиска, которая находится внутри IFrame на главной странице.
Когда страница результатов поиска загружается, вызывается свойство '<% = results%>', которое вызывает функцию поиска. Функция поиска извлекает строку XML из базы данных SQL Server, загружает ее в XmlDocument и преобразует выходные данные с помощью XLST в stringWriter обратно в свойство «results».
Вывод XSLT представляет собой таблицу с примерно 24 столбцами, javascript в строке щелкните, чтобы выделить строку, и несколько ссылок в каждой строке для перехода на новый экран для редактирования выбранной записи.
Работает своевременно до 100 рядов. Когда он достигает 200 строк таблицы, время задержки становится заметным. При 500 строках рендеринг занимает около 12-15 секунд, а при 1000 строках это занимает 90 секунд. Возможно 3000 записей, и пользователь хотел бы иметь возможность возвращать все строки для сортировки, анализа и, возможно, экспорта; поэтому мне нужна лучшая ловушка для мыши.
Задержка полностью связана с отображением в браузере в Internet Explorer 8.0. В Google Chrome на 1000 строк уходит примерно 7 секунд. Кроме того, я использовал дополнительный тестовый код, чтобы записать вывод html из преобразования xslt в файл, чтобы убедиться, что вывод сформирован правильно и проблем не замечено. Я перешел к сохраненному файлу на своем локальном компьютере с 1000 строками в новом окне браузера, и загрузка в браузер занимает приблизительно 5 секунд; Итак, я действительно в растерянности, почему для загрузки непосредственно в веб-форму в IFrame требуется 90 секунд.
Кто-нибудь знает, что может происходить и как решить проблему? Есть ли лучший способ взломать этот орех? Было бы лучше, если бы я сохранил вывод XSLT в файл и загрузил его в IFrame? Или, может быть, я должен отказаться от xslt и просто использовать цикл response.Write?