30 июня 2023 г. (изменено: 30 июня 2023 г.)
Канал: @cherkashindev
📖** What developers need to know about Chrome’s Memory and Energy Saver modes - Chrome Developers**
В конце прошлого года в Google Chrome появились 2 новых режима
- Memory Saver (Экономия памяти)
- Energy Saver (Энергосбережение)
Они позволяют более гибко управлять использованием системных ресурсов браузером.
🔸 Memory Saver: Этот режим автоматически освобождает неиспользуемые фоновые вкладки, чтобы освободить память для активных вкладок и других запущенных приложений. Но для сложных сайтов с интерактивностью это может привести к проблемам восстановления состояния страницы.
🔸 Energy Saver: Режим Energy Saver позволяет браузеру снизить частоту обновления экрана для экономии заряда батареи. Обычно, для большинства сайтов, не требуется внесение изменений, но если вы используете JavaScript-анимации, имейте в виду, что они могут замедлиться.
👉 Важно, чтобы веб-разработчики учитывали эти новые режимы и обеспечивали безупречный опыт для пользователей. Рекомендуется сохранять состояние пользователей при изменении их активности и обрабатывать перезагрузки страницы после удаления вкладок.
В данный момент нет никаких событий, которые будут запущены перед выгрузкой вкладки. Рекомендуются следующие способы сохранения состояния:
- Периодически, когда состояние изменяется
- Когда вы переходите на другую вкладку, по событию
visibilitychange
document.addEventListener('visibilitychange', () => {
if (document.visibilityState === 'hidden') {
storeState();
}
});💡 Не забудьте протестировать свой сайт в этих режимах, чтобы убедиться, что все работает как задумано.
- Для этого можно открыть в адресной строке
chrome://discardsи для нужно вам вкладки использовать кнопку Urgent Discard. - Инструменты автоматического тестирования пока не помогут вам протестировать эти режимы с помощью автотестов. Но вы можете использовать простую перезагрузку страницы, она почти полностью идентична выгрузке вкладки. Разница лишь в том, что при выгрузке вкладки, события
beforeunload,pagehideиunloadне будут вызваны.