JavaScript медлительность вне событий - PullRequest
0 голосов
/ 30 июля 2010

Как мне диагностировать проблемы с производительностью веб-страницы, если ни одно из моих событий JavaScript не является причиной?

У меня есть веб-приложение, использующее jqGrid . Нажатие на сетку вызывает 2-3-секундное замораживание, прежде чем что-либо случится (включая любые события щелчка, которые были поражены). Кликнув в любом месте на странице, это хорошо (мгновенный ответ). Удаление строк уменьшает задержку (50 строк очень медленные, но 5 строк дают мгновенный ответ).

Отмена привязки всех событий на странице à la $('*').add(document).unbind() не устраняет проблему, что заставляет меня поверить, что есть события, которые я пропускаю.

Я не вижу такого медленного поведения, если я сохраняю исходный код страницы на своем рабочем столе и открываю этот HTML-файл в своем браузере. Похоже, это указывает на то, что на самом деле это проблема JavaScript.

Я тестирую Firefox 3.6.8 и последнюю версию Firebug. Эта проблема также затрагивает другие браузеры, но не так быстро в быстрых (Safari и Chrome).

Обновление : IE7, похоже, не страдает от этой задержки, как ни странно. Я поместил предупреждение в самом начале события щелчка jqGrid, и окно события появилось сразу после того, как я нажал на сетку. Firefox по-прежнему имеет мультисекундную задержку, а Chrome и Safari имеют очень короткую задержку (не такую ​​короткую, как в IE, но все еще очень короткую).

Обновление № 2 : Я вполне уверен, что это может быть ошибка в Firefox. Несмотря на то, что я отменяю / умираю во всех событиях, я предполагаю, что Firefox не очищает все должным образом. Я удалил все остальные события и добавил одно событие щелчка в таблицу сетки и запустил профилировщик. Затем я щелкнул один раз на столе и завершил работу профилировщика. Я получил "Нет активности в профиле". сообщение.

Ответы [ 2 ]

2 голосов
/ 30 июля 2010

Лучшим инструментом, который я могу порекомендовать для этого, является dynaTrace AJAX Edition , это профилировщик для IE (как правило, самый медленный в производительности JS, поэтому на самом деле хорошая тестовая среда для запуска оптимизации).

Это даст вам полную разбивку, покажет вам повторные вызовы методов, дерево вызовов и куда идут циклы вашего процессора. Ознакомьтесь с их учебниками по использованию / функциям , чтобы начать.

Ах да, это бесплатно:)

0 голосов
/ 30 июля 2010

Используете ли вы live () со всеми этими событиями кликов? Иногда live () может реально снизить производительность страницы, если на конкретной странице слишком много экземпляров. Особенно относящийся к Ajax контент, который содержит ссылку, на которую вживую необходимо перепривязать.

Подробнее см. Здесь:

Замедляет ли jquery работу сайтов?

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