eprivalov
@eprivalov
Учусь

Вопрос к знатокам JavaScript. Какой прирост производительности от подключения внешних скриптов таким способом?

Вопрос к знатокам JavaScript. Какой прирост производительности от подключения внешних скриптов таким способом?

Например подключение Гугл Аналитики дает какой-то плюс по сравнению с обычным добавлением:

<script src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXXXXXX-1" async></script>

<script src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXXXXXX-1" defer></script>

Или динамически подключаемый тот же самый скирпт?

function addExternalCodeAsync(){
                var fired = false;
                if (fired == false) {
                    fired = true;
                    setTimeout ( () => {
                        var GTMObject = document.createElement("script");
                        GTMObject.src = "https://www.googletagmanager.com/gtag/js?id=UA-XXXXXXXXX-1";
                        GTMObject.async = true;
                        document.getElementsByTagName('head')[0].appendChild(GTMObject);
                        window.dataLayer = window.dataLayer || [];
                        function gtag() {dataLayer.push(arguments);}
                        gtag('js', new Date());

                        gtag('config', 'UA-XXXXXXXXX-1');

                        setTimeout(function () {
                            gtag('event', location.pathname, {
                                'event_category': 'Новый посетитель'
                            });
                        }, 10000);
                    }, 5000);
                }
            }
  • Вопрос задан
  • 976 просмотров
Пригласить эксперта
Ответы на вопрос 2
Zraza
@Zraza
Помог ответ? Отметь решением!
В первом случае парсинг html остановится, загрузится и выполнится скрипт gtag, после этого парсинг продолжится
Во втором случае:
1) Загрузка начнется только после того, как отработает этот код. Плохо потому, что контент сайта (обычно) важнее скриптов аналитики и его стоит отобразить первым.
2) Загрузка скрипта gtag не будет блокировать разбор html ввиду аттрибута async - этот код будет выполнен после того, как будет загружен

В принципе, можно и в первом случае добавить аттрибут async тегу script и это улучшит скорость загрузки
Советую глянуть инфу по аттрибутам async/defer
Ответ написан
Не нужно откладывать загрузку аналитики никаким способом. Снесите все счётчики и если все загружается ок, то лучше вы не сделаете и будет только кривая статистика. У Яндекс метрики показатель отказов на 15 секунд стоит. Ставьте async и все. Единственное что там реально грузит страницу - это Яндекс метрика. Написали выше, что контент важнее, поспорю, важна и аналитика и контент
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы