powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Не пойму что делает браузер
25 сообщений из 40, страница 1 из 2
Не пойму что делает браузер
    #33628758
Фотография vbnet2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я сформировал в ASP.NET2 XML-файл, заполнил им TreeView и вывожу его в браузер. SQL отработал мгновенно, мгновенно отработал IIS. И браузер достаточно быстро показал дерево. Но после этого начинается непонятки. Хотя XML-файл приличный - пару мегабайта (но его можно фильтровать и cущественно сокращать) - но все ж таки браузер выводит его удивительно долго - не менее пяти минут на приличной машине...
Причем отобразил-то браузер страничку тоже практически мгновенно, потом CPU 100% и еще минут пять он думает... Что ж такое там делает браузер еще пять минут после показа странички? Как это понять?
Я проверил безо всяких ASP - в целом производительность среды такая, что как просто XML-файл, браузер выводит эти два мегабайта менее чем за секунду...
Смотрю итоговый исходный текст сформированной страницы уже в браузере - он оказывается уже больше 20 мегабайт (в десять раз больше обьема загруженных данных), причем 99.9% процентов его обьема занимает ViewState.
Сначала я подумал, что я где-то ошибся и что-то огромное сохранил во ViewState. Но щас вообще все убрал - это просто практически статическая страничка, на которой из XML загружен TreeView. Никакого пользовательского сохранения во ViewState нет.
С другой стороны, даже двадцатимегабайтный XML-выводится браузером секунд пять - но никак ни пять минут...

Посоветуйте, плиз, как боротся с таким невероятным размером ViewState...
Это как бы первый и главный вопрос, и второй - что же все таки делает браузер еще пять минут после показа странички?
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33630525
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
браузер рисует страничку,
потом грузит в 2мб в память
и парсит там в DOM-дерево,
потом строит узлы в тривью по этому дереву.

Это всё занимает 2 часа. Т.к. какждый узел в тривью содержит дополнительную
информацию то размер увеличиваетсяв 10 раз. В зависимости от структуры
данных цифры могут меняться но порядок примерно таким и останется

Как бороться - учесть что это веб и передавать на клиент не все данные а
только нужную часть. Как выделить только нужную часть - зависит от задачи.


Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33630805
Фотография Max Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй у TreeView отключить вивстейт, например
TreeView1.EnableViewState=false
Но, возможно, тебе всё-таки придётся написать свой контрол TreeView, так как стандартный действительно "тяжеловат". Есть примеры кода на aspnetmania.com
Max Pro
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33630866
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНо, возможно, тебе всё-таки придётся написать свой контрол TreeView, так как стандартный действительно "тяжеловат". Есть примеры кода на aspnetmania.com

ткни пальцем в пример кода на aspnetmania.com с PopulateOnDemand
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33630879
Фотография Max Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladgrig авторНо, возможно, тебе всё-таки придётся написать свой контрол TreeView, так как стандартный действительно "тяжеловат". Есть примеры кода на aspnetmania.com

ткни пальцем в пример кода на aspnetmania.com с PopulateOnDemand
Ну вот я недавно публиковал. Скоро (как время будет, через несколько дней наверно) кстати обновлю, добавив туда яваскрипта на схлопывание уровней.
Вот ссылка:
http://aspnetmania.com/Code/Code/185.html
Там зарегистрированные пользователи могут ставить отметки по пятибальной шкале. Если не в лом, то проставь. Готовая dll и топик для обсуждения там указан. Примечание: dll собрана для 1.1-го Фраймеворка. Для 2-го необходимо заново пересобрать dll.
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33630881
Фотография Max Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В догонку. В моём примере не нужен нафиг никакой XML. Необхомина и достаточна в данном случае всего лишь хранимая процедура SQL.
Max Pro
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33630886
Фотография Max Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и перед уходом домой для улучшения настроения добавлю этот пост 999-й. Прямо как номер нашей межгалактической станции.
:-)
Max Pro
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33630919
Фотография Galant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Max ProНу и перед уходом домой для улучшения настроения добавлю этот пост 999-й. Прямо как номер нашей межгалактической станции.
:-)
Max Pro
Ну, паздравляим! :)


По поводу тривью. На самом деле сделать PopulateOnDemand как два пальца... :) Примеров кода аякса навалом: 20 строк жабаскрипта и мона лепить лэйбу "Сделана для УЕБ 2.0" :)
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33630940
Фотография vbnet2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное борьбы с этим просто нет... Я уж понял...

Кстати до этого я УЖЕ отказался полностью от XmlDataSource в связи с его глючностью и стал сам грузить XML в TreeView. Этот XmlDataSource просто замучал меня тем, что ни в какую не хотел показать TreeView, которое на нем сидело, с измененными вложенностью и порядком узлов, сколько я не пихал в него новый XML из SQL. Потом отказался и стал безо всяких XmlDataSource загружать TreeView сам. Так конечно препятствий нет для действительно динамического дерева...

Теперь похоже пришла пора и от TreeView отказываться...
ТЯЖЕЛОВАТ - это мягко сказано очень при соотношении полезных и паразитных (ViewState) данных 1:10
Это наверное даже не тяжесть TreeView, а тяжесть самой технологии ASP.NET - ведь таких проблем (10:1) нет ни у Flash, ни у PHP...

PS. Состояние контрола отключать бесполезно, он не помнит ничего и раскрывает ничего клиентским скриптом... Ну а ограничивать - этот путь понятен...
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33630950
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПо поводу тривью. На самом деле сделать PopulateOnDemand как два пальца... :) Примеров кода аякса навалом: 20 строк жабаскрипта и мона лепить лэйбу "Сделана для УЕБ 2.0" :)
вот хоть один человек понял о чем разговор... а то с Мах-ом вроде разговариваем на одном языке, а друг друга не понимаем... ;) покажи примеры бесплатных контролов деревьев с использованием ajax...
авторТЯЖЕЛОВАТ - это мягко сказано очень при соотношении полезных и паразитных (ViewState) данных 1:10
Это наверное даже не тяжесть TreeView, а тяжесть самой технологии ASP.NET - ведь таких проблем (10:1) нет ни у Flash, ни у PHP...

думаю у них и таких контролов нет...

давно хотел сказать (пусть эта мысль и затрётся здесь среди других топиков):

странно, мы с одной стороны хотим ТАКОЙ функциональности от контролов, какой не позволяют себе на сайтах и в проектах сами разработчики... с другой стороны, когда разработчики идут у нас на поводу и, расширяют функционал контролов до наших желаний, мы плачем что контролы стали ТЯЖЁЛЫМИ... всё это у меня вызывает некое непонимание, чего же нам на самом деле хочеться!!!???

P.S. никаких ответов я не жду - у админов заранее прошу прощения за маленький, но очень актуальный флуд ;)
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33631537
Фотография Galant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladgrigпокажи примеры бесплатных контролов деревьев с использованием ajax...
Ни пакажу! :)
На самом деле специяльно не искал, но если понадобится, то, думаю, самому сделать будет проще.
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33631802
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНа самом деле специяльно не искал, но если понадобится, то, думаю, самому сделать будет проще.
Вот я тоже - ДУМАЮ... а взять и сделать не получается... а казалось бы "два пальца об асфальт..." ;)
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33632171
Фотография Galant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladgrig авторНа самом деле специяльно не искал, но если понадобится, то, думаю, самому сделать будет проще.
Вот я тоже - ДУМАЮ... а взять и сделать не получается... а казалось бы "два пальца об асфальт..." ;)

Госсподя! :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
<SCRIPT LANGUAGE="JavaScript">
    function getHTTPRequestObject() {
        var xmlHttpRequest;
        if (typeof ActiveXObject != 'undefined') {
            xmlHttpRequest = new ActiveXObject('Microsoft.XMLHTTP');
        } else if (typeof XMLHttpRequest != 'undefined') {
            xmlHttpRequest = new XMLHttpRequest();
        } else {
            xmlHttpRequest = false;
        }
        return xmlHttpRequest;
    }

	var httpRequester = getHTTPRequestObject() 

    function makeAJAXCall(Url){
        if (httpRequester) {
	httpRequester.open("GET", Url, true);
	httpRequester.onreadystatechange = processResponse;
            httpRequester.send();
        }
    }
    

    function processResponse() {
    
var READY_STATE_COMPLETE= 4 ;
		
        if (httpRequester.readyState == READY_STATE_COMPLETE) {
            if (httpRequester.status== 200 ) {
                printToPage ( httpRequester.responseText);
            } else {
                var message = "Problem retrieving data. requestStatus=" + httpRequester.status + ". Message="+httpRequester.statusText;
                printToPage ("<font color='red'>" + message + "</font>");
            }
        }
    }


    function printToPage(value){
        sOutput.innerHTML = value;
    }

		</SCRIPT>

Корневые ноды сидят в sOutput (span, div, etc...). Т.е. при клике перерисовываеццо все меню. Если надо отображать только чайлдноды, то необходимо добавить в функцию параметр куда писать полученный ответ с сервера.
Копируем скрипт и на любой корневой ноде навешиваем что-то типа "onclick=MakeAjaxCall(GenerateTreeView.aspx?nodeID= & nodeID);"


Это то, что первое пришло в голову и на что понадобилось минут 15-20. За день, я думаю, мона сваять приличную аякс-тривьюху :)
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33632190
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И парситься двухмегабайтный хмл будет по каждому клику по ноде.
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33632241
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЭто то, что первое пришло в голову и на что понадобилось минут 15-20. За день, я думаю, мона сваять приличную аякс-тривьюху :)
что пришло???!!!
К чему мне описание XMLHTTP - это можно прочесть в любой статье про AJAX... чужие мысли стали приходить в голову???!!!
если уж на то пошло, то на странице вообще ничего подобного выписывать не надо, для этого есть готовые .dll
(см. ссылку внизу страницы)
наверное само дерево должно быть как то организовано?! по кликам должны попадать значения в функции and etc. Речь то идёт о самописном дереве - надо использовать не TreeNode - а самому создавать контролы подобные им...
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33632565
Фотография Galant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladgrig что пришло???!!! ...
К чему мне описание XMLHTTP/...
чужие мысли стали приходить в голову???!!!


Влад, программеру мозги зачем даны? :)
Или ты хочешь, чтобы я за 10 минут сваял тривью, готовое к продаже? Так разрешено мечтать тока манагерам проектов :)
Я запостил пример скрипта, с помощью которого (утверждаю) за день мона сваять приличное тривью для собственного проекта. Без всяких длл и тринод.

"Кто скажет, что это девочка, может кинуть в меня камень" (це) кина :)
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33632670
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВлад, программеру мозги зачем даны? :)
Или ты хочешь, чтобы я за 10 минут сваял тривью, готовое к продаже? Так разрешено мечтать тока манагерам проектов :)
Я запостил пример скрипта, с помощью которого (утверждаю) за день мона сваять приличное тривью для собственного проекта. Без всяких длл и тринод.

знаешь - я УТВЕРЖДАЮ, что ни за день ни за неделю ты не осуществишь своих планов... ;) попробуй меня переубедить
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33632801
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Galant
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
Protected rootPath As String = "D:\data"

Protected Sub FillTreeNode(ByVal searchPath As String, ByRef parentNode As TreeNode)
           
        Dim nnode As TreeNode
        Dim iteminfo() As FileSystemInfo = New DirectoryInfo(searchPath).GetFileSystemInfos
                       
        For i As Integer =  0  To iteminfo.Length -  1 

            Dim item As FileSystemInfo = iteminfo.GetValue(i)
            nnode = New TreeNode
                        
            If item.Attributes = FileAttributes.Directory Then
                            
                With nnode
                    .Text = item.Name
                    .ImageUrl = "~/images/icons/map.ico"
                    If New DirectoryInfo(item.FullName).GetFileSystemInfos.Length <>  0  Then
                        .PopulateOnDemand = True
                    End If                    
                    .SelectAction = TreeNodeSelectAction.Expand
                    
                End With
                              
            Else
               
                With nnode
                    .Text = item.Name & " (" & FormatNumber(New FileInfo(item.FullName).Length /  1024 ,  0 ).ToString & " Kb)"
                    .ImageUrl = "~/images/icons/notdefined.ico"
                    .NavigateUrl = "Default2.aspx"
                    .ToolTip = item.Name & " (" & FormatNumber(New FileInfo(item.FullName).Length /  1024 ,  0 ).ToString & " Kb)"
                End With
                                         
            End If
                  
            parentNode.ChildNodes.Add(nnode)
            
        Next 
End Sub

Protected Sub TreeView1_TreeNodePopulate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.TreeNodeEventArgs)
        FillTreeNode(rootPath & e.Node.ValuePath, e.Node)
End Sub
Что бы веселее думалось - функция по добавлению дочерних нод (простой каталог на диске) в родительскую.

Это именно та функция, которая должна будет вызываться при ActiveXObject('Microsoft.XMLHTTP'))

P.S. осталось НЕМНОГО ;) - переделать все TreeNode на собственные web-контролы которые
авторсидят в sOutput (span, div, etc...).
ну, и подписать для этих контролов нужные стили и события
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33632908
Фотография Galant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladgrig попробуй меня переубедить

Боюсь нисмагу. Ниасилю :)

Влад, я специяльно оговорился про "приличное тривью для собственного проекта ". В своих собственных проектах ты все контролы, классы, методы и т.д. пишешь в расчете на универсальное использование? Т.е. если вдруг бухгалтерия попросит тебя в нижнем левом углу прилепить тривью с филиалами-отделами-сотрудниками, то ты, конечно же, сделаешь функции для "заливки" из SQL Server, Access, Oracle, MySQL, XML, plain text? Наворотишь кучу ненужных в данном месте и вообще в проекте свойств и методов?
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33632967
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВлад, я специяльно оговорился про "приличное тривью для собственного проекта". В своих собственных проектах ты все контролы, классы, методы и т.д. пишешь в расчете на универсальное использование? Т.е. если вдруг бухгалтерия попросит тебя в нижнем левом углу прилепить тривью с филиалами-отделами-сотрудниками, то ты, конечно же, сделаешь функции для "заливки" из SQL Server, Access, Oracle, MySQL, XML, plain text? Наворотишь кучу ненужных в данном месте и вообще в проекте свойств и методов?
вот я и предлагаю - не заниматься словесным ананизмом, а как приличным людям - взять и помочь окружающим...
на мой взгляд - дерево мягких (FW 2.0) действительно сырое (не совсем пригодное) для использования... могу рассказать о личных наблюдениях - если интересно...
здесь по форуму я встречал вопросы - как сделать селект ноде, если эта нода представлена в виде ссылки (у MS это глубоко зашито и сломать нелегко)? были так же вопросы - как сделать дерево каталогов на диске? and etc.
Давай создадим приличное (БЕСПЛАТНОЕ) дерево - с использованием AJAX просматривающее каталоги на диске -
ДУМАЮ ОКАЖЕМ ОГРОМНУЮ УСЛУГУ ОКРУЖАЮЩИМ НАС СОБЕСЕДНИКАМ!!!
P.S. Ваш ответ!!!???
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33633114
Фотография Galant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторP.S. Ваш ответ!!!???

Я так понимаю, что любая отмазка с моей стороны будет равносильна признанию меня "словесным ананистом"? :)

Выхода нет :)
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33633174
leo Resh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Давайте посмотрим на ситуацию немного под другим углом.
Бывает, что анализ проблемы в терминах «web-контролов» (или более обобщенно – визуального проектирования) не всегда способствует простоте ее решения.
Всё таки, веб – клиент-серверная технология, и стоит определить, какие задачи решаются клиентом (браузером), а какие сервером.
Рассмотрим задачу с нашм TreeView . Если нам не хочется гонять на клиента все дерево, а хочется AJAX’у, то нам хорошо бы моделировать дерево на клиенте. Java Script позволяет сделать это достаточно элегантно. Также клиент должен уметь запрашивать у сервера данные для раскрытия произвольного узла. Это тоже не проблема (XmlHttpRequest или манипуляции с невидимым iframe – кому как больше нравится).
Серверу остается уметь отвечать на вышеописанный запрос понятным для клиента образом.
При таком подходе, дереву на клиенте, в общем-то все равно, что показывать – каталоги на диске, ветки форума или еще что.. Что с сервера приедет – то и покажет..
Сделать это, как и утверждалось в этой ветке, достаточно просто.
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33633449
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЯ так понимаю, что любая отмазка с моей стороны будет равносильна признанию меня "словесным ананистом"? :)

Вовсе нет... Просто речь о том что говорить - дело не хитрое... Намного сложнее всё это исполнить...
авторСделать это, как и утверждалось в этой ветке, достаточно просто.
Давайте переходить от слов к делу - предлагаю найти друг друга (написать письма) - определиться с тактикой и стратегией создания шедевра - и не засорять эту ветку флудом по поводу "как это просто" ... всё равно никто в это утверждение не поверит...
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33633456
leo Resh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
e-mail в профиле, аська - там же.
...
Рейтинг: 0 / 0
Не пойму что делает браузер
    #33633466
leo Resh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А тактика (и стратегия) простая. Могу сгрузить слегка специализированный под конкретные нужды (вывод рубрикатора) код дерева на Java Script, и отвечать на любые вопросы по нему... На большее, к сожалению, времени нет. Модифицируйте и пользуйтесь по своему усмотрению.
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Не пойму что делает браузер
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]