JSF2.0 buildView() и производительность f:ajax
JSF2.0 - удивительный веб-фреймворк; В то время как Rails/DJango/Play все в основном используют шаблоны с подстановкой переменных (в основном, JSP), JSF2.0 более склонен к использованию основанных на компонентах фреймворков, таких как Tapestry, GWT и Wicket.
Тем не менее, JSF имеет линейно-унизительную производительность со сложностью ваших страниц. Поэтому после прочтения увлекательной статьи здесь: http://industrieit.com/blog/2011/11/stateless-jsf-high-performance-zero-per-request-memory-overhead меня возникло несколько вопросов.
Во-первых, автор говорит, что большая часть жизненного цикла JSF проводится в buildView()
, Как бы это отразилось на конкретном приложении, а именно на Мохарре?
Во-вторых, будет ли либеральное использование f:ajax execute=""
помощь с buildView()
спектакль? Ли execute
атрибут сократить количество работ, которые buildView()
должен сделать?
Наконец, при навигации по всей странице есть ли эквивалент f:ajax
что может сказать "только выполнить следующие компоненты при восстановлении текущего представления"? Это бессмысленно?
Спасибо!
1 ответ
Таким образом, оказывается, что сложно описать это в Мохарре. Тем не менее, MyFaces довольно легко... Просто укажите свой профилировщик на LifeCycleImpl.
На MyFaces правильное выполнение установки приводит к значительному увеличению производительности. На моей машине
buildView()
шаблон занимает около 8 мс. К каждой базе добавляется линейная стоимость для каждого компонента, который обрабатывается вf:ajax execute=
, Я добавил 10000h:outputText
вui:repeat
окруженui:fragment id="fragment"
, Когда я добавилfragment
кf:ajax execute=
Я пошел от времени ответа 8 мс до времени ответа 45 мс. Урок здесь должен только установитьf:ajax execute=
выполнять только ваши входные компоненты иf:ajax render=
Только вашh:message
компоненты.Компонент кеша OmniFaces, по сути, делает это, но немного шире.
Я все еще надеюсь, что кто-то может присоединиться к более научным ответам:)