Непредсказуемые Последствия Оптимизации Производительности Chrome

Привет! В последней версии Chrome обнаружено очень необычное поведение браузера.

Такое поведение вызывало новые и необычные ошибки в моем веб-скрипте.

И я решил поделиться тем, как оптимизируется производительность Chrome, и с какими необычными последствиями вы можете столкнуться.



Непредсказуемые последствия оптимизации производительности Chrome

Идти.

Аномалия, с которой мы столкнулись, выглядит следующим образом:

  1. Пользователь использует веб-приложение.

  2. Затем пользователь нажимает кнопку в приложении.

    Эта кнопка сохраняет информацию на странице и открывает новую вкладку (с сохраненной информацией).

  3. На самом деле в новой вкладке информация не сохраняется.

    Это наш баг.

  4. Также есть аномалия: если потом переключиться на первую вкладку (на секунду), а потом снова на новую вкладку, то информация сразу становится доступна в новой вкладке (после обновления страницы).



Причина аномалии

Это выглядит очень странно.

Такое ощущение, что Chrome полностью блокирует старую вкладку при переходе на новую.

Оказалось, что недавно (57-й выпуск, 14 марта 2017 г.

) Chromium выпустил релиз со значительной оптимизацией производительности.

Одна из оптимизаций — сократить ресурсы, выделяемые на запуск фоновых вкладок.

Доказательство: https://blog.chromium.org/2017/03/reducing-power-consumption-for.html Эта оптимизация блокирует фоновую вкладку сразу (!) после открытия новой.

Причем снижение производительности касается не только работы javascript, но и других API. Например, в нашем случае операции над IndexedDB в браузере стали работать невероятно медленно.



Как исправить

Чтобы обойти это поведение, нам пришлось синхронно вызывать наши собственные асинхронные обратные вызовы и уменьшить зависимость от асинхронных API системы.

Теги: #JavaScript #разработка веб-сайтов #indexeddb #asynchrony #JavaScript #Google Chrome

Вместе с данным постом часто просматривают: