#javascript #performance #google-chrome #w3c #webapi
#javascript #Производительность #google-chrome #w3c #webapi
Вопрос:
Я хочу отслеживать потребление памяти нашим приложением / веб-страницей через фиксированные интервалы времени на разных клиентах. Моя команда хотела бы изучить этот показатель, чтобы понять, оказывают ли какие-либо новые развертывания функций существенное влияние на объем памяти, потребляемой приложением, и откатить функцию, если это так.
Я прочитал об этих источниках:
- https://web.dev/monitor-total-page-memory-usage/
- https://trackjs.com/blog/monitoring-javascript-memory/
- https://developer.mozilla.org/en-US/docs/Web/API/Performance/memory
- https://wicg.github.io/performance-measure-memory/
- https://github.com/WICG/performance-measure-memory
Во-первых, если мы посмотрим на старый API: window.performance
Пользователь должен включить точный мониторинг памяти, запустив Chrome с флагом «—enable-precise-memory-info». Мне кажется неразумным ожидать, что наши пользователи будут запускать Chrome с этим флагом.
Я также читал, что этот API может чрезмерно или недостаточно измерять потребление памяти, поскольку он измеряет размер кучи JavaScript, что может быть неверным, если есть фреймы или сервисные работники, которые запускают другую кучу, или если есть какие-либо большие веб-страницы, которые находятся в одной куче.
Из-за этих двух причин этот параметр не является допустимым вариантом (imo) для обеспечения наблюдаемости внешнего интерфейса на реальных клиентах в процессе производства.
Во-вторых, если мы посмотрим на новый API: performance.measureMemory()
.
Он доступен только через пробную версию origin до января 2021 года (согласно тому, что мне сообщила форма, когда я подписался на токен).
Помимо локального профилирования на компьютерах разработчиков, на данный момент это, по-видимому, единственная альтернатива для достижения того, чего я хочу достичь выше (или я ошибаюсь в своем предположении?).
У меня есть два вопроса относительно использования API:
- Есть ли у нас какие-либо альтернативы после января 2021 года (будет ли это недоступно после января)?
- Я могу протестировать это на своем локальном компьютере, включив флаг:
#enable-experimental-web-platform-features
без каких-либо проблем. У меня есть пробный токен origin, и если я добавлю его в качестве мета-тега в свойindex.html
, нужны ли моим пользователям какие-либо флаги, включенные в их браузере, чтобы мы могли это наблюдать?
Ответ №1:
Я обратился к редактору спецификации API w3c для измерения памяти, который был достаточно любезен, чтобы перезвонить мне с быстрым ответом.
Сейчас я публикую ответы, которые я получил по электронной почте, здесь, на случай, если кто-то еще будет искать это:
- Есть ли у нас какие-либо альтернативы после января 2021 года (будет ли это недоступно после января)?
Мы планируем отправить его в Chrome 89. По соображениям безопасности он будет защищен self.crossOriginIsolated. Версия, которая в настоящее время поставляется в пробной версии origin, не требует изоляции между источниками.
- Я могу протестировать это на своем локальном компьютере, включив флаг: #enable-experimental-web-platform-features без каких-либо проблем. У меня есть пробный токен origin, и если я добавлю его в качестве мета-тега в свой index.html , нужны ли моим пользователям какие-либо флаги, включенные в их браузере, чтобы мы могли это наблюдать?
Если вы добавите мета-тег, то пользователям не нужны никакие флаги. Обратите внимание, что без —enable-blink-features=’ForceEagerMeasureMemory’ может потребоваться некоторое время (до 20 секунд), пока обещание с результатом не будет выполнено. Это потому, что API ожидает следующей сборки мусора для выполнения измерения.