Почему DART делает мой сайт НАСТОЛЬКО медленным?

коллеги!

Я работаю на этом сайте (www.2winbet.gr).

На этой неделе добавлен интерфейс входа в систему с веб-сайта, который был создан в виде небольшого плагина в Dart с использованием polymer.

Все это "работает", и я очень доволен скоростью, с которой мне удалось создать этот компонент в Dart... НО.... сайт стал ГИПЕР медленно работать после того, как я его добавил!!.. .

Если я уберу его, сайт снова станет очень быстрым...

Мой код дротика такой маленький и простой... Я действительно не могу понять, в чем проблема...

Не могли бы вы указать мне, что я сделал неправильно здесь? Я не могу поверить, что это лучшее, что может сделать Dart, если его добавить в качестве небольшого компонента на сайт Wordpress, на котором есть несколько анимаций.

Спасибо вперед


person GV3    schedule 24.04.2014    source источник
comment
Вы вручную компилируете с помощью dart2js или используете Pub Build для генерации своего JavaScript? «Pub Build» (из редактора) запустит компилятор dart2js со всеми возможными оптимизациями компилятора. Это уменьшит размер вашего ввода JS и должно помочь в общем времени загрузки страницы/скрипта.   -  person dgp    schedule 24.04.2014
comment
Я щелкаю правой кнопкой мыши по основному HTML-файлу и нажимаю «Запустить как Javascript», после чего беру документы, созданные в моей папке сборки. Я полагаю, есть лучший способ...?   -  person GV3    schedule 24.04.2014
comment
Попробуйте щелкнуть проект в рабочей области, а затем выбрать Инструменты -> Сборка паба. Посмотрите, не приведет ли это к меньшему результату.   -  person dgp    schedule 25.04.2014
comment
Сделал это, и на самом деле это не имеет никакого значения, и сайт продолжает отображаться очень медленно, особенно при прокрутке.   -  person GV3    schedule 25.04.2014
comment
Я добавляю эти 4 строки к тегу ‹head›: ‹script src=2winbet.gr/login/packages/shadow_dom/› ‹script src=2winbet.gr/login/packages/custom_element/› ‹script src=2winbet.gr/login/packages/browser/interop.js›‹/› ‹script src=2winbet.gr/login/login.html_bootstrap.dart.js›‹/ › Я протестировал удаление некоторых из них, и когда я удаляю: ‹script src=2winbet.gr/login/packages/shadow_dom/› затем снова все БЫСТРО, НО логин не Работа!   -  person GV3    schedule 25.04.2014
comment
Вы упоминаете, что это особенно верно при прокрутке. Это говорит мне, что это не сценарий дротика (скомпилированный в javascript), а скорее то, что вы делаете в DOM (ваши анимации должны быть профилированы). Посетите jankfree.org, чтобы узнать, как профилировать и оптимизировать свой сайт, чтобы выяснить, где проблемы в вашем коде. .   -  person Matt B    schedule 25.04.2014


Ответы (1)


Я спросил Джона Мессерли (работающего над Dart’s Polymer):

Похоже, это вина Полимера. Polymer зависит от теневого DOM, но, похоже, нет хорошего способа полифилла для этой функциональности без обертывания каждого узла в DOM.

Полифилл должен быть настолько быстрым, насколько это возможно, но из-за обертывания возникают некоторые неизбежные затраты. Фактические накладные расходы зависят от размера DOM и отношения операций DOM к коду другого приложения. Возможно, есть некоторые особенно медленные области, которые еще не были затронуты. Особенно сложно реализовать диспетчеризацию событий.

Наверное, было бы интересно получить больше данных. (Не стесняйтесь обращаться к нам в системе отслеживания ошибок).

Вы, вероятно, получите оптимальную производительность в собственной реализации. Chrome 35 доставляет его. Firefox экспериментирует с реализацией.

Вы также можете попытаться реорганизовать свое приложение, чтобы теневая часть DOM/Polymer.dart содержалась в iFrame. Таким образом, это не повлияет на другие элементы страницы.

person Florian Loitsch    schedule 25.04.2014
comment
При профилировании я понял, что теневой DOM был черной силой, снижающей производительность. (Мы даже шутили в офисе, что должна быть ЗНАЧИТЕЛЬНАЯ причина, по которой он называется SHADOW... ууууххх :) ) Действительно, когда он работает изначально, все работает гладко... Но я не могу на это полагаться. Я воспользуюсь советом по рефакторингу компонента в iFrame. Я считаю, что это самый мудрый вариант, который у меня есть. Я дам знать здесь, как все прошло. Спасибо, Флориан. - person GV3; 28.04.2014
comment
У меня есть дополнительный вопрос, связанный с реализацией iFram. Может быть, вы можете помочь мне с этим. stackoverflow.com/questions/23404768/ - person GV3; 02.05.2014