Привет! В последней версии Chrome обнаружено очень необычное поведение браузера.
Такое поведение вызывало новые и необычные ошибки в моем веб-скрипте.
И я решил поделиться тем, как оптимизируется производительность Chrome, и с какими необычными последствиями вы можете столкнуться.
Идти.
Аномалия, с которой мы столкнулись, выглядит следующим образом:
- Пользователь использует веб-приложение.
- Затем пользователь нажимает кнопку в приложении.
Эта кнопка сохраняет информацию на странице и открывает новую вкладку (с сохраненной информацией).
- На самом деле в новой вкладке информация не сохраняется.
Это наш баг.
- Также есть аномалия: если потом переключиться на первую вкладку (на секунду), а потом снова на новую вкладку, то информация сразу становится доступна в новой вкладке (после обновления страницы).
Причина аномалии
Это выглядит очень странно.Такое ощущение, что 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
-
Цифровая Подпись В Xml
19 Oct, 24 -
Как Обновить Прошивку Коммутатора Cisco
19 Oct, 24 -
Второй Пузырь Доткомов Уже Раздулся?
19 Oct, 24