Отключить функцию JavaScript на основе производительности пользовательского компьютера
На моем веб-сайте есть jQuery script (из плагин jQuery для анимации теневой анимации), который постоянно меняет цвет тень окна различных <div>
на домашней странице.
Анимация не нужна, но на медленных машинах она занимает много времени.
Можно ли узнать, будет ли script работать слишком медленно? Затем я могу отключить его, прежде чем он повлияет на производительность.
Это даже хорошая идея? Если нет, есть ли простой способ разбить анимацию jQuery?
Ответы
Ответ 1
Это может косвенно решить вашу проблему. Выберите несколько алгоритмов и тестов производительности с этого сайта http://dromaeo.com/, которые похожи на ваш плагин jQuery. Не выполняйте всесторонние тесты, как на сайте. Вместо этого выберите довольно маленькие и быстрые алгоритмы и запустите их в течение незаметного периода времени.
Используйте минимальный предопределенный временной интервал, чтобы ограничить продолжительность выполнения этих тестов. Скажем, если этот интервал составляет 200 мс, а на быстрой машине с браузером А вы можете получить 100 итераций, а на какой-то случайной машине пользователя он сможет выполнить только 5 итераций, тогда вы можете захотеть отключить его у пользователя машина. Подстройте и настройте, пока не найдете оптимальные номера.
В качестве бонуса отправьте все результаты теста на ваш сервер, чтобы у вас было лучшее представление о том, где ваши пользователи находятся в спектре скорости. Если большинство пользователей используют более медленные компьютеры и более старые браузеры, тогда просто может быть смысл вообще удалить эту вещь.
Ответ 2
Вероятно, вы могли бы сделать это за счет нескольких циклов цикла, которые сделали интенсивную обработку при загрузке страницы, но это замедлит работу страницы и добавит еще больше нагрузки на процессор, поэтому это не похоже на отличное решение.
Компромисс, который я использовал в прошлом, заключался в том, чтобы принять решение на основе версии браузера, например, пользователи Internet Explorer 6 получают более простой контент, тогда как новые браузеры с лучшей производительностью JavaScript получают анимацию. Казалось, это очень хорошо работает на практическом уровне. На практике выбор браузера является большим фактором производительности JavaScript, и вы можете получить 90% соответствия тому, что вы хотите, просто просто учитывая это.
Ответ 3
Вы можете сделать что-то вроде $(window).width()
, чтобы получить ширину браузера. Используя это, вы можете сделать предположение, что любой < 1024px
широкий, вероятно, будет либо нетбуком, смартфоном, либо старым компьютером.
Это было бы не так точно, как выбор времени цикла, но гораздо эффективнее.
Очевидно, что это правило является обобщением и будут медленные компьютеры s > 1024px. Но в целом компьютер с разрешением 1024px +, как правило, может обрабатывать справедливый бит javascript (пока владелец не загрузит множество программ, вирусов и панелей инструментов браузера!)
надеюсь, что это полезно!