веб-приложение работает медленно в Firefox, что может вызвать это - YUI / Javascript - PullRequest
2 голосов
/ 10 ноября 2011

Я создаю веб-приложение на одной странице.Я использую YUI для таких вещей, как триггеры событий.HTML Dom не такой большой, как 50 КБ, они включают множество скриптов для YUI и других вещей.Все загружается нормально - работает очень быстро в хром.Приложение не делает никаких внешних вызовов, таких как выборка URL / AJAX и т. Д. Моя проблема в том, что в Firefox Dom работает медленно / очень медленно.даже при нажатии на кнопку она остается нажатой на мгновение, а затем всплывает, то есть Dom замедляется, как будто что-то замедляет его в фоновом режиме.Мне было интересно, что может вызвать это.Может ли это быть вызвано слишком большим количеством кода, слишком сложными объектами - то есть объектами json, слишком большим количеством обработчиков событий или слишком большим доступом к Dom в целом.Это не тот случай, когда код работает медленно.Это не сам код.Проблема заключается в том, что сам Dom работает медленно, как будто их слишком много, и т. Д. Хотя большинство фреймворков здоровенные, я не вижу, чтобы мой код был таким большим.Любые идеи или указатели будут полезны.Я ценю без кода или примера, я не могу получить точные ответы, что я искал, были указатели относительно того, что является и не приемлемо

  1. размер страницы
  2. количество событийв Dom
  3. сложность объектов json / JavaScript
  4. множество селекторов класса css в элементах, то есть class = "кнопка babel u красный круглый отключенный триггер"

будет этимвещи замедляют Дом, и если да, то как его обойти.

Ответы [ 2 ]

3 голосов
/ 10 ноября 2011

Вы можете использовать Firebug, чтобы увидеть, где зависает JavaScript.

  1. Открыть Firebug.
  2. Нажмите «Консоль».
  3. Чтобы начать профилирование, нажмите «Профиль».
  4. В вашем приложении нажмите кнопку, которая, как вы знаете, медленно реагирует и ждет ответа.
  5. Снова нажмите «Профиль».

Это даст вам список всех JavaScript, которые выполнялись и какие функции занимали больше всего времени. Это хорошая отправная точка для выяснения, почему дела идут так долго. Возможно, YUI может использовать более быстрые селекторы DOM в Chrome, чем FF. Если это так, вы можете добавить несколько идентификаторов на страницу, чтобы сократить это.

1 голос
/ 16 ноября 2011

Если бы мне пришлось угадывать, я бы упорядочил перечисленные вами параметры как самые большие потери производительности, например:

  1. множество селекторов классов
  2. количество событий на самом Dom
  3. сложность объектов JS / JSON
  4. размер страницы

Но я также использую Chrome в разработке, поэтому не знаю наверняка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...