Facebook Pixel замедляет время загрузки страницы почти на целую секунду - PullRequest
0 голосов
/ 21 января 2020

Я начинаю оптимизировать, и у меня возникает эта проблема с пикселем отслеживания Facebook, убивающим мое время загрузки: Отчет о водопаде

Моя страница заканчивается около 1,1 секунды, но пиксель не Фини sh почти до полной секунды позже.

Мой пиксельный скрипт находится в голове, согласно документам. Есть ли способ ускорить это?

1 Ответ

1 голос
/ 21 января 2020

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

Вопрос, однако, в том, насколько существенным является улучшение - встраивать код уже написано в гостях, что фактический SDK загружается асинхронно.

Блок <script>, который встраивает SDK, может блокировать синтаксический анализатор, но вы не можете включить async или defer встроенные сценарии, которые не будут иметь никакого эффекта. Помещение этого кода во внешний файл, а затем встраивание его с помощью asyn c или defer может помочь в этом отношении.


Другой вариант - вообще не использовать скрипт, а отслеживать все события, которые вам нужно отслеживать, используя альтернативу изображения.

https://developers.facebook.com/docs/facebook-pixel/advanced#installing -пиксельное использование-тег-img-тег :

Если вы необходимо установить пиксель, используя облегченную реализацию, вы можете установить его с тегом <img>.

«Установить» здесь немного вводит в заблуждение - это только отследит указанное событие c это указано в параметрах URL изображения. Кроме того, вам придется самостоятельно выполнять все отслеживание, автоматики больше не будет. Простое событие просмотра страницы по умолчанию, которое вы можете отследить, вставив изображение непосредственно в код HTML; если вам нужно динамически отслеживать какие-либо события, то вы можете использовать JavaScript для создания нового объекта Image и назначить соответствующий URL-адрес, чтобы браузер получал его в фоновом режиме.

Существует Несколько дополнительных ограничений, упомянутых в документах, проверьте, можете ли вы жить с ними, если вы хотите попробовать этот маршрут.

Если вам нужно было учесть дополнительные факторы, такие как соблюдение GDPR, - вам придется справиться с этим. это полностью самостоятельно, если вы используете изображения для отслеживания. (В SDK есть методы для приостановки отслеживания на основе согласия пользователя ie, https://developers.facebook.com/docs/facebook-pixel/implementation/gdpr)


Третьим вариантом может быть попытка изменить код, который встраивает Сам SDK.

Фрагменты кода создают функцию fbq, если она еще не существует. Любые последующие обращения к нему помещают событие для отслеживания в «стек», который затем обрабатывается после загрузки файла SDK. Таким образом, теоретически это можно переписать, например, таким образом, чтобы он не вставлял узел script для немедленной загрузки SDK, а задерживал его, используя тайм-аут. Это все равно должно работать точно так же (теоретически я не проверял это явно) - до тех пор, пока события помещаются в упомянутый стек, не должно иметь значения, когда или как загружается SDK. (Слишком большой тайм-аут может привести к переходу пользователей на другие страницы до того, как произойдет какое-либо отслеживание.)


И последнее, но не менее важное, что я бы назвал «хорошей кармой» - удаление отслеживания в целом, и все сопутствующие нарушения, профилирование и общее нарушение конфиденциальности, которые идут с ним :-) Это, вероятно, не вариант для всех, и если вы запускаете рекламные кампании в Facebook или аналогичные, это может быть не один вообще. Но в тех случаях, когда это чисто для целей «я хочу понять, что пользователи делают на моем сайте», локальная установка Matomo или аналогичная может подойти так же хорошо, если не лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...