Во скольких вкладках открыт сайт?

289
13 октября 2017, 18:24

Как проверить, во скольких вкладках открыт сайт? Чтобы можно было избежать высокой нагрузки на сервер, если например на сайте каждые пару секунд идут несколько запросов на сервер. Скажем у человека открыто 10 вкладок, но пользуется только 1. А в итоге еще 9 отправляют 5 запросов на сервер каждые 2 секунды, хотя толку от этого нет.

Answer 1

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

Если отвечать в общем на вопрос, проверьте для начала какой нибудь статистикой какой процент аудитории открывает несколько вкладок, иначе все дальнейшие оптимизации будут крайне несущественными.

Answer 2

Некогда делали так. Ставим интервал, каждый раз увеличивая счетчик. Если счетчик достиг определенного значения, запросы на сервер не отправляем. Если на странице происходят какие-то шевеления (события ниже), то счетчик обнуляем, если нужно, запускаем отправку запросов по новой.

window.onscroll - прокрутка страницы

window.onmousemove - движение мыши

window.onfocus - переход во вкладку

window.onkeydown - нажатие клавиш

window.onclick - нажатие на кнопки мыши

Можно сделать проще и следить только за onfocus/onblur.

Но если пользователь ждет какого-то события с сайта и решил во время ожидания посмотреть что-то иное, открыв рядом второе окно, то от сайта он ничего не дождется.

READ ALSO
Возвращает undefined и не может прочитать стиль

Возвращает undefined и не может прочитать стиль

Добрый День! Столкнулся с проблемой, JS никак не может понять стиль и выдает ошибку в consolelog каждый раз

253
Работа с input , вставка символа и пробелы

Работа с input , вставка символа и пробелы

Как сделать так чтобы, если в числе больше двух нулей, то оно отделялось пробелами то есть: 100 < 2 , 1 000 > 2, 1 000 000 > 2 и тд

218
OWL carousel autoplay по загрузке блока

OWL carousel autoplay по загрузке блока

Добрый день, есть скрипт карусельки, не могу додуматься как можно запустить автоплей, при попадании блока карусели на экран, а не при загрузке...

282
отрицание в regex

отрицание в regex

этим патерном \bif\((+)\)\{([\s\S]+?)} я выбираю все блоки if http://joxi

189