Есть js код (например)
setInterval(function() {
... обновление значений или графиков...
}, 20000);
, который повторяется много раз на разных вкладках М.
Но! Нам реально нужно видеть изменения только на одной вкладке (той, которая в «фокусе» видна на экране). Остальные 10 вкладок только впустую нагружают М.
Вопрос.
Есть ли способ отследить в фокусе или нет данная вкладка, чтобы отключить обновление на всех невидимых в данный момент вкладках? И есть ли способ отследить переход вкладки в фокус (для обновления в этот момент)?
Тот же вопрос и по отдельным страничкам (не вкладкам М).
js и оптимизация производительности
Модератор: immortal
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: js и оптимизация производительности
Пожалуй, самый простой способ в данном случае, это переделать вкладки так, чтобы они не показывали скрытые DIV-ы как сейчас, но загружали нужную страницу в iframe. В таком случае работать (обновляться) будет только активная вкладка, хоть и при смене вкладок будет происходить загрузка соответствующих страниц, т.е. они будут медленнее переключаться.
Я по этому поводу не очень беспокоился, т.к.
а) при старте загружается только первая вкладка, остальные подгружаются только при переключении (к вопросу об определении фокуса -- да, это возможно)
б) если есть необходимость открывать на разных устройствах разные вкладки, то их можно напрямую по ссылкам открывать или поставить как домашние страницы
Но в принципе, можно подумать над оптимизацией, согласен.
Я по этому поводу не очень беспокоился, т.к.
а) при старте загружается только первая вкладка, остальные подгружаются только при переключении (к вопросу об определении фокуса -- да, это возможно)
б) если есть необходимость открывать на разных устройствах разные вкладки, то их можно напрямую по ссылкам открывать или поставить как домашние страницы
Но в принципе, можно подумать над оптимизацией, согласен.
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: js и оптимизация производительности
Тут дело вот в чём.
Стандартный механизм с %object.value% (макросами?) какой то странный. Эти макросы почему то (почему?) не обновляют значения на страничках. Ладно — изобрели костыль с refresh обновлением странички, но дело в том, что обновление совместимо не со всеми js индикаторами (они начинают дёргаться) и динамическим canvas (3D) контентом (при каждом рефреше 3D перегружается). Т. е. refresh по большому счёту — это несерьёзно.
Поэтому:
Стандартный механизм я отправил фтопку (по необходимости и не от хорошей жизни) и заменил всё отображение ajax middle-connector (-ом) + свой js.
_Это решает все проблемы_.
Странички ожили. Все значения мгновенно обновляются, кнопочки нажимаются, графики обновляются. Интерфейс стал практически таким же отзывчивым, как в desktop приложениях.
_Каким он и должен быть_.
Единственный недостаток - это необходимость для каждого значения объявлять отдельный экземпляр middle-connector (-а). Но это небольшая плата за нормальный (а не через одно место) интерфейс.
Если бы ещё имелась возможность определения в фокусе страничка или нет — то проблема была бы полностью решена.
А по большому счёту этот механизм должен стоять за макросами %object.value%.
Стандартный механизм с %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 и оптимизация производительности
А как регулируется обновление значений по частоте? Установлено фиксированное значение (1 секунда к примеру)?
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
Re: js и оптимизация производительности
Частота задаётся при объявлении экземпляра middle-connector-a и её можно в любой момент динамически поменять. Там всё можно менять на лету.