Сегодня я пытался познакомиться со всем новым, что может предложить HTML5, в частности с холстом. Я наткнулся на сайт www.html5canvastutorials.com и начал следовать некоторым руководствам и немного экспериментировать с кодом в разных браузерах. Когда я добрался до следующего примера, я заметил что-то странное в Google Chrome. http://www.html5canvastutorials.com/advanced/html5-canvas-oscillation-animation/
Предполагается, что функция webkitRequestAnimationFrame помогает снизить FPS (и, следовательно, затраты ЦП), когда вы не активно находитесь на сайте, например, когда вы переходите на другую вкладку. Однако, когда я попробовал этот пример, я заметил, что это не всегда дает приятные результаты.
- Google Chrome как активное окно, сайт на текущей вкладке: около 60 кадров в секунду, отлично!
- Google Chrome как активное окно на другой вкладке: около 1 кадра в секунду, очень хорошо.
- Google Chrome как активное окно, на моем телевизоре (используется как второй монитор), 120 кадров в секунду, странно, но без нареканий.
- Google Chrome не в активном окне, а на другой вкладке, также около 1 кадра в секунду или около того, идеально.
Затем плохая часть: если мой сайт находится на текущей вкладке, но у меня есть другое окно, полностью закрывающее окно Google Chrome (например, развернутое окно), FPS подскакивает примерно до 2500 (и, следовательно, максимально использует одно ядро ЦП).
Все работает совершенно нормально, когда я пробую тот же сайт в Firefox.
Эта скрипта — пример, где она показывает средний FPS с момента последнего обновления: http://jsfiddle.net/kmKZa/55/ (я практически скопировал код с обучающего сайта)
Я хотел бы знать, как я могу предотвратить эти страшные всплески ЦП, если у кого-нибудь есть какие-либо идеи. Спасибо заранее за любые советы!