Отключить функцию JavaScript в зависимости от производительности компьютера пользователя - PullRequest
14 голосов
/ 18 июля 2010

На моем веб-сайте есть сценарий jQuery (из Плагин теневой анимации jQuery ), который постоянно меняет цвет тени блока * * * * * на главной странице.

Анимация не обязательна, но на медленных машинах она занимает много процессорного времени.

Можно ли узнать, будет ли скрипт работать «слишком медленно»? Затем я могу отключить его, прежде чем он повлияет на производительность.

Это даже хорошая идея? Если нет, то есть ли простой способ разбить анимацию jQuery?

Ответы [ 3 ]

7 голосов
/ 18 июля 2010

Это может косвенно решить вашу проблему. Выберите несколько алгоритмов и тестов производительности с этого сайта http://dromaeo.com/, которые похожи на ваш плагин jQuery. Не запускайте комплексные тесты, как они делают на сайте. Вместо этого выберите довольно маленькие и быстрые алгоритмы и запускайте их в течение незаметного периода времени.

Используйте небольшой заранее заданный промежуток времени, чтобы ограничить продолжительность выполнения этих тестов. Скажем, если этот промежуток составляет 200 мс, и на быстром компьютере с браузером A вы можете получить 100 итераций, в то время как на компьютере с произвольным пользователем он может выполнить только 5 итераций, тогда вы можете захотеть отключить его на пользователе машина. Твик и твик, пока вы не найдете оптимальные числа.

В качестве бонуса отправьте все результаты тестирования обратно на свой сервер, чтобы у вас было лучшее представление о том, где находятся ваши пользователи в скоростном спектре. Если подавляющее большинство пользователей используют более медленные компьютеры и старые браузеры, то имеет смысл вообще удалить эту вещь.

6 голосов
/ 18 июля 2010

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

Однако компромисс, который я использовал в прошлом, заключался в принятии решения на основе версии браузера, например, пользователи Internet Explorer 6 получают более простой контент, тогда как более новые браузеры с лучшей производительностью JavaScript получают анимацию. Казалось, что это работает довольно хорошо на практическом уровне. На практике выбор браузера является важным фактором в производительности JavaScript, и вы можете на 90% соответствовать желаемому, просто принимая это во внимание.

1 голос
/ 18 июля 2010

Вы можете сделать что-то вроде $(window).width(), чтобы получить ширину браузера. Используя это, вы можете сделать предположение, что ширина < 1024px может быть нетбуком, смартфоном или старым компьютером.

Это не будет почти так же точно, как хронометраж цикла, но гораздо более эффективно.

Очевидно, что это правило является обобщением, и будут медленные компьютеры с> 1024px. Но в целом компьютер с разрешением 1024px + обычно способен обрабатывать значительную часть JavaScript (пока владелец не загружает программное обеспечение, антивирусные программы и панели инструментов браузера!)

надеюсь, что это полезно!

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