Несколько недель назад я выступал на JSConf Asia с докладом об использовании Performance API. Хотя мой доклад был в первую очередь об API, я также немного поговорил о трассировке. Людям понравилось объяснение по трассировке, поэтому я подумал, что сделаю глубокое погружение ✌️

Так! Отслеживание! Отслеживание - это форма ведения журнала. Вместо того, чтобы быть неструктурированным console.log(), трассировка предоставляет дополнительную информацию о журнале. С помощью трассировки вы можете увидеть взаимосвязь между журналами.

След состоит из пролетов. Интервал - это журнал, в котором описывается отдельная работа. Обычно он имеет отметку времени для времени начала и окончания работы и, возможно, некоторые аннотации об измененном состоянии данного объекта. В нем также будет полезная информация, которую вы захотите увидеть при отладке.

Группа промежутков создает дерево узлов, сгруппированных по их отношениям друг к другу с течением времени.

Но как происходит группировка этой информации? Существует два основных метода сбора данных трассировки: внутриполосный и внеполосный. Внутриполосный сбор происходит, когда вы передаете данные вместе с заголовками вашего запроса. Например, заголовок server-time или пользовательский, из которого вы можете хранить и читать информацию. При внеполосном сборе вы пишете и считываете информацию из API по мере продвижения по дереву трассировки.

g o o d l i n k z .

Я узнал большую часть этой информации из шикарной бумаги Google. У него есть хорошие основы того, как они справились с реализацией трассировки.

Как и в случае с Dapper, я предлагаю вам оформить заказ в открывающемся формате.

Chrome недавно выпустил способ проверить тайминги сервера с помощью заголовка server-тайминга, о котором я упоминал выше. Я сам еще не использовал его, но мне кажется, что это интересный способ увидеть тайминги серверов в инструментах разработчика.

Спасибо за просмотр ✨ ✌️ Если вы хотите увидеть больше моих рисунков, подписывайтесь на меня в twitter. Также, если вам посчастливилось оказаться в Мельбурне в JSConf AU, приходите поздороваться! Я буду говорить о HTTP / 2 в Node.js 💻