Я видел несколько похожих постов, но ничего похожего на это ...
У меня есть сайт (Sharepoint). Когда я получаю доступ к определенной странице, на которой есть много пользовательских веб-частей, загрузка страницы занимает ~ 30 секунд. Я использовал Firebug и подтвердил, что сервер долго работает (во вкладке «Сеть» временная шкала веб-страницы показывает ~ 30 секунд «ожидания»). Я также уверен, что JavaScript не будет работать вечно, так как отключение JavaScript не влияет на время загрузки.
Однако, если я использую только стандартный .net WebClient и захожу на страницу, загрузка занимает всего ~ 2 секунды.
Еще более странно то, что некоторые клиенты работают быстрее (не то, что я ожидал бы, если бы это была проблема на стороне сервера). Но некоторые клиенты (например, IE 8 на XP) просто зависают, пока не произойдет ошибка на стороне сервера.
Я также пытался отключить файлы cookie, полагая, что что-то при создании файла cookie вызывало проблему, но по-прежнему не получалось быстро открыть страницу.
Я решил стать экспериментальным и использовал скрипач. Если я удалил строку User Agent из заголовка, результаты вернулись довольно быстро, однако тело ответа было значительно меньше. Я слишком новичок в веб-разработке, чтобы понять, что это значит.
На данный момент я относительно уверен, что это действительно проблема на стороне сервера.
Если кто-то может помочь или пролить немного света, это очень ценится.
Обновление:
Хорошо, после сравнения содержимого двух результатов, одного с пользовательским агентом IE (или чего-либо в этом отношении) и одного без пользовательского агента в заголовке, есть очень большая разница (примерно в 3 раза больше контента в заголовочный файл user-agent).
Веб-части содержат большое количество объектов System.Web.UI.WebControls.Treeview. При щелчке «дескриптора» древовидного списка отображается таблица с данными. В результатах, где был предоставлен пользовательский агент, эти таблицы заполняются данными (и их совсем немного, эта веб-часть крайне неэффективна).
На странице, где не указан пользовательский агент, все теги в таблицах заменяются якорями с вызовами javascript.
Итак, я думаю, теперь ясно, что элемент управления TreeView в ASP.NET обрабатывает вывод по-разному, в зависимости от агента пользователя в заголовке.
При этом, кажется (без дальнейшего изучения), что javascript, который я вижу, внедренный вместо данных, является AJAX-вызовом, чтобы получить данные и отобразить их больше "когда это необходимо", и это здорово. Предполагая, что это так, теперь мне просто нужно знать, как сказать элементу управления TreeView делать это все время (у меня есть доступ к исходному коду).
Окончательное обновление: После более интенсивной отладки и профилирования профориентации я пришел к выводу, что между довольно большими объемами данных и невероятно плохой производительностью объекта ASP.NET TreeView я Я потрошу это в пользу контроля Telerik Grid. Я надеялся, что смогу просто подправить несколько вещей, но чем больше я изучал это, тем больше обнаруживал, что TreeView просто не очень эффективен.
Спасибо всем за помощь.