js и оптимизация производительности

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

js и оптимизация производительности

Сообщение Alex » Пн мар 03, 2014 9:41 am

Есть js код (например)

setInterval(function() {
... обновление значений или графиков...
}, 20000);

, который повторяется много раз на разных вкладках М.

Но! Нам реально нужно видеть изменения только на одной вкладке (той, которая в «фокусе» видна на экране). Остальные 10 вкладок только впустую нагружают М.

Вопрос.

Есть ли способ отследить в фокусе или нет данная вкладка, чтобы отключить обновление на всех невидимых в данный момент вкладках? И есть ли способ отследить переход вкладки в фокус (для обновления в этот момент)?

Тот же вопрос и по отдельным страничкам (не вкладкам М).
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: js и оптимизация производительности

Сообщение sergejey » Пн мар 03, 2014 10:20 am

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

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

Но в принципе, можно подумать над оптимизацией, согласен.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: js и оптимизация производительности

Сообщение Alex » Пн мар 03, 2014 12:01 pm

Тут дело вот в чём.

Стандартный механизм с %object.value% (макросами?) какой то странный. Эти макросы почему то (почему?) не обновляют значения на страничках. Ладно — изобрели костыль с refresh обновлением странички, но дело в том, что обновление совместимо не со всеми js индикаторами (они начинают дёргаться) и динамическим canvas (3D) контентом (при каждом рефреше 3D перегружается). Т. е. refresh по большому счёту — это несерьёзно.

Поэтому:

Стандартный механизм я отправил фтопку (по необходимости и не от хорошей жизни) и заменил всё отображение ajax middle-connector (-ом) + свой js.

_Это решает все проблемы_.

Странички ожили. Все значения мгновенно обновляются, кнопочки нажимаются, графики обновляются. Интерфейс стал практически таким же отзывчивым, как в desktop приложениях.

_Каким он и должен быть_.

Единственный недостаток - это необходимость для каждого значения объявлять отдельный экземпляр middle-connector (-а). Но это небольшая плата за нормальный (а не через одно место) интерфейс.

Если бы ещё имелась возможность определения в фокусе страничка или нет — то проблема была бы полностью решена.

А по большому счёту этот механизм должен стоять за макросами %object.value%.
Последний раз редактировалось Alex Пн мар 03, 2014 12:19 pm, всего редактировалось 1 раз.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: js и оптимизация производительности

Сообщение sergejey » Пн мар 03, 2014 12:15 pm

А как регулируется обновление значений по частоте? Установлено фиксированное значение (1 секунда к примеру)?

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: js и оптимизация производительности

Сообщение Alex » Пн мар 03, 2014 12:57 pm

Частота задаётся при объявлении экземпляра middle-connector-a и её можно в любой момент динамически поменять. Там всё можно менять на лету.
Ответить