Как onunload влияет на производительность страницы - PullRequest
0 голосов
/ 07 июня 2018

У меня есть сайт, который выполняет кучу работы в обработчике window.onunload.Я работаю над его оптимизацией, но я не совсем понимаю, как это влияет на производительность моей страницы.Кажется, что он блокирует перезагрузку страницы или переход к другому URL в том же домене, но он не блокирует междоменную навигацию.Похоже, что это периодически вызывает проблемы с производительностью в Chrome, но более последовательно воспроизводимо в IE.Может кто-нибудь объяснить, как window.onunload влияет на производительность сайта, или указать мне на спецификацию, которая влияет?

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Основная проблема с обработчиками unload - это аналитические трекеры, которые делают синхронный XHR для отправки последней части данных отслеживания.Синхронный XHR блокирует переход к следующей странице, пока он не завершится, следовательно, это массивный анти-паттерн.

Вместо этого следует использовать navigator.sendBeacon (https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon). Этот API был создан для решения именно этой проблемы, но поскольку он новый, он не поддерживается повсеместно (особенно в IE11 отсутствует поддержка).

(Синхронизация XHR долгое время использовалась для этого варианта использования, чтобы гарантировать выполнение HTTP-вызова; асинхронный код в обработчиках выгрузки не будет выполнен, а асинхронные XHR, выпущенные до отмены навигации, могут быть отмененыпри навигации.)

0 голосов
/ 07 июня 2018

Было бы очень интересно увидеть тест скорости в разных браузерах с использованием windows.onload и других методов.Может быть, я проверю это завтра и вернусь к вам.

До тех пор, вот ссылка, которую вы можете найти полезной

stackoverflow.com / questions / 20180251 / когда использовать окно-загрузки /…

...