У меня есть страница, показывающая статистику в реальном времени. Он запускает много javascript, делает много HTTP-запросов, каждые 5 секунд отображает графики SVG с использованием D3.js, имеет множество анимаций CSS и часто меняет частоту DOM.
Пока страница сфокусирована, она работает гладко. Если я переключусь на другую вкладку и вернусь позже, часто бывает короткая пауза, где страница, кажется, замерзает, прежде чем представление внезапно кажется перерегистратором, и страница снова станет пригодной для использования. Чем длиннее вкладка, тем длиннее эта пауза. Если вкладка была в фоновом режиме очень долго (часы), и я вернусь к ней, она будет заморожена в течение долгого времени, а затем сработает.
Все эти поведения наблюдаются в Chrome. Я не много тестировал в других браузерах.
Что не делает Chrome, когда вкладка находится в фоновом режиме, и что она делает во время этой паузы, когда я сначала вернусь к вкладке?
UPDATE:
Я также делаю анимацию jQuery. Этот ответ и этот может иметь значение.
В соответствии с этим первым ответом:
"Неактивные вкладки браузера блокируют некоторые функции setInterval или setTimeout."
stop (true, true) остановит все буферизованные события и немедленно выполнит только последнюю анимацию.
Я добавил вызов .stop(true, true) в моем коде и, по крайней мере, для коротких поездок от вкладки, я не обнаруживаю икоту. Мне нужно оставить его в фоновом режиме в течение длительного времени и проверить его, прежде чем я могу определить, имеет ли он существенную разницу.