Я работаю над веб-приложением в jQuery, который, на более старых машинах или машинах без многого снабжает, может работать плохо. Для обхождения этого, я хотел бы сделать ухудшенную версию, которая отключает некоторые опции, особенно те, которые полагаются на большие изображения.
Как я могу сказать, работает ли мое приложение плохо на компьютере пользователя в jQuery или JavaScript в целом? Мне просто нужен способ вызвать функцию, которая ухудшит приложение. (особенно, когда пользователь может испытать нехватку системной памяти),
Единственным путем я могу думать, для ручного вмешательства пользователя, но опция добавила бы помеху для пользователей, которым не нужен он и пользователи, которым нужен он, может не заметить его.
Спасибо!
Нет никакого способа узнать, до того как ваш javascript начнет работать. Вы можете разбросать несколько объектов Date профилирования, например, так:
var timeTaken;
var start = +new Date(); // cast right now to a number
for (i = 0; i < 1000000000; i++) // Some seriously intensive loop
{
// ...
}
timeTaken = (+new Date()) - start; // calculate the total time taken
if (timeTaken > 500) // if time taken is longer than 500ms
switchToBasic();
Вы должны иметь в виду, что есть другие вещи, которые могут повлиять на производительность браузера. Если пользователь уже выполнял некоторые интенсивные операции с процессором, это могло привести к переключению его машины в базовый режим, даже если у него есть достаточно мощный компьютер.
Если вам действительно нужно быть уверенным, что она работает на компьютерах низкого класса (и у вас нет старых компьютеров поблизости), почему бы не попробовать использовать виртуальную машину, например VirtualBox или подобную. Запуск ОС в виртуальной машине может замедлить ее работу, таким образом имитируя медленное оборудование. Я уверен, что большинство виртуальных машин позволяют настраивать скорость виртуального процессора...
Что касается автоматического определения того, когда клиент является медленным компьютером, я не уверен, что вы можете надежно определить это, не добавляя тесты, которые еще больше замедляют работу машины.
Я бы предложил вам начать с создания ссылки, которая позволит пользователю переключить "режим медленного компьютера". Таким образом, терпеливые пользователи с медленными компьютерами могут сидеть и долго ждать, чтобы получить причудливые функции, если они этого хотят, или они могут отключить их, если они нетерпеливы. Это гораздо проще реализовать, и вы можете обнаружить, что тестеры/пользователи на самом деле довольны таким решением... :)
Если вы решите сделать автоопределение, пожалуйста, сделайте ручную отмену, это очень раздражает, когда вам подают отупевшие данные, потому что автоопределение не сработало, без возможности изменить это.
Не могли бы вы просто написать javascript-функцию, которая запускает контролируемый тест, хронометрирует результат, а затем использует его как основу для ухудшения сайта?
Может быть, уменьшенная версия одного из тестов из SunSpider, например
Вы можете установить таймер для отображения диалогового окна, которое позволяет пользователю переключиться в базовый режим. showSlowDialog не остановит процесс медленной операции, так как он выполняется в другом потоке (выполняется одновременно).
function showSlowDialog() {
if(confirm("switch to slow?")) {
switchToSlow();
}
}
var timer = setTimeout("showSlowDialog()", 5000); // show dialog in 5 seconds
SomeSlowishOperationThatMayOrMayNotTakeSomeTime(); // do long operation
clearTimeout(timer); // clear timer.
Gmail показывает полосу загрузки со ссылкой "переключиться на HTML-only". Вы можете попробовать что-нибудь в этом роде. (Кроме того, если загрузка занимает много времени, ссылка "Переключиться только на HTML" становится более заметной. Она всплывает в середине экрана.)
.Вы уже сделали все, чтобы сделать приложение быстрее?
Например, вы можете запустить приложение через профилировщик Firebug и проверить производительность всей системы с помощью YSlow .
Как говорят другие, запускайте контролируемые вычислительные тесты и измеряйте, сколько времени они занимают. Но вместо того, чтобы делать это только один раз, проведите несколько коротких тестов. Если даже один раз из десяти вы получите быстрый результат, вы знаете , что у вас быстрая машина.
Быстрая машина могла быть перегружена другими задачами, но медленная машина не может внезапно стать быстрой в течение некоторого времени.
В зависимости от вашего приложения вы также можете добавить подсказки пользователю, где он сможет найти более быстрый браузер. Браузеры с JIT-компиляцией Javascript значительно быстрее.