#javascript #reactjs #single-page-application #google-tag-manager
#javascript #reactjs #одностраничное приложение #google-tag-manager
Вопрос:
Все становится интересным…
В многостраничном приложении теги вводятся менеджером тегов и удаляются при каждом изменении / перезагрузке страницы.
В одностраничном приложении теги вводятся и сохраняются в DOM до тех пор, пока страница не будет перезагружена вручную.
У меня чуть более 70 тегов, которые запускаются при разных событиях dataLayer. Менеджер тегов вставляет их все в нижнюю часть DOM, и они никогда не удаляются. Если пользователь просматривает много продуктов, он получит сотни тегов scripts и iFrames в DOM. Похоже, это вызывает серьезные утечки памяти.
Как я могу это предотвратить? Есть ли что-то, чего я не понимаю, используя GTM в SPAS? Я искал, но не нашел много информации. Либо люди не заботятся об утечках памяти, либо я делаю что-то не так.
Есть ли способ очистить все старые теги сценариев и фреймы iFrames, чтобы сборщик мусора мог выполнять свою работу и освободить немного памяти?
Спасибо за вашу помощь, надеюсь, эта тема поможет большему количеству людей, сталкивающихся с той же проблемой, поскольку СПА-салоны становятся все более популярными.
Комментарии:
1. Можете ли вы указать тег, который вызывает проблему? Есть много способов отслеживания. Некоторые используют js для отправки хита, а некоторые используют image или iframe. Может быть, вы сможете перечислить тег, вызывающий проблему, и найти, есть ли альтернативный способ.
Ответ №1:
Для всех, кто сталкивается с утечкой памяти с помощью GTM и SPAS, вот подводные камни:
- Не используйте триггеры щелчка GTM по элементу. Они привязывают события щелчка ко всему в DOM, и сборщик мусора не может выполнять свою работу, вызывая утечки памяти.
- Не используйте пользовательские переменные Javascript в макросах / переменных GTM, поскольку они анонимны, и новая копия функций создается в памяти при каждом событии, которое вы запускаете.
- Конечно, используйте историю вместо просмотра страницы, чтобы запускать просмотры страниц, поскольку в одностраничных приложениях обновления не выполняются.
Надеюсь, это поможет некоторым людям, сталкивающимся с той же проблемой
Комментарии:
1. У меня такая же проблема! Я не могу очистить свои введенные скрипты GTM. Это полезные советы, но я все еще не могу удалить введенные скрипты. Вы когда-нибудь находили решение?
Ответ №2:
Из коробки менеджер тегов Google настроен для традиционных веб-страниц, отображаемых сервером.
Вам необходимо выполнить некоторые дополнительные настройки для правильной работы диспетчера тегов Google с SPA. Вот руководство для этого:
https://www.analyticsmania.com/post/single-page-web-app-with-google-tag-manager/
Комментарии:
1. Спасибо за ответ Будет. Менеджер тегов, похоже, настроен правильно, так как отслеживаются все просмотры страниц и события. Но внедренные скрипты живут вечно, так как нет перезагрузки страницы. Это та часть, с которой я действительно борюсь… Нет никакого способа очистить эти внедренные скрипты в react