Отключите функцию JavaScript на основе производительности компьютера пользователя

Мой веб-сайт имеет сценарий jQuery (от Теневой анимации плагин jQuery), который постоянно изменяет цвет тени поля различных

s на домашней странице.

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

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

Это - даже хорошая идея? В противном случае есть ли простой способ разбить анимационный jQuery?

14
задан Peter Mortensen 12 May 2011 в 17:16
поделиться

3 ответа

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

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

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

7
ответ дан 1 December 2019 в 14:21
поделиться

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

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

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

Надеюсь, это будет полезно!

1
ответ дан 1 December 2019 в 14:21
поделиться

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

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

6
ответ дан 1 December 2019 в 14:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: