Когда соединение с facebook замедляется, сайт загружается медленно

У нас есть общедоступный сайт. Он содержит скрипт Facebook Pixel. Однако в нашем регионе иногда резко падает скорость до фейсбука, тогда как остальной интернет работает нормально. Когда это происходит, главная страница загружается очень медленно. Это скрипт, расположенный в шапке страницы:

<script>
    !function(f,b,e,v,n,t,s)
    {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
    n.callMethod.apply(n,arguments):n.queue.push(arguments)};
    if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
    n.queue=[];t=b.createElement(e);t.async=!0;
    t.src=v;s=b.getElementsByTagName(e)[0];
    s.parentNode.insertBefore(t,s)}(window, document,'script',
    'https://connect.facebook.net/en_US/fbevents.js');
    fbq('init', '123456');
    fbq('track', 'PageView');
</script>

Насколько я знаю, этот скрипт должен загружаться асинхронно, но кажется, что это не так, потому что страница не может полностью отображаться, пока пиксель facebook не закончит свою работу. Я даже установил pagespeed EnableFilters defer_javascript в модуле pagespeed моего nginx, но это не помогает.

Что я могу сделать? Что я делаю не так?


person Nurjan    schedule 29.06.2018    source источник
comment
Попробуйте добавить <script async> в свой тег. P.S работает только с внешними скриптами, использующими src.   -  person Alex    schedule 29.06.2018
comment
«Что я могу сделать? Что я делаю не так?» — наверное ничего, а скорее всего ничего. Возможно, вам просто нужно решить, действительно ли для вас важнее постоянное обнюхивание пользователей, чем общая хорошая производительность вашего сайта… :-)   -  person CBroe    schedule 29.06.2018
comment
@CBroe, даже теги defer и async мне не помогут?   -  person Nurjan    schedule 29.06.2018
comment
Этот код уже написан для асинхронной загрузки SDK, а элемент скрипта, который он динамически создает и вставляет в документ для загрузки внешнего ресурса, уже имеет установленный флаг async (t.async=!0; ) "Это скрипт, расположенный в заголовке страницы" - поместить его в конец тела - это единственное, что я могу придумать, что могло бы еще больше повысить производительность.   -  person CBroe    schedule 29.06.2018


Ответы (1)


Вы можете попробовать добавить в сам скрипт тег deferscript

<script defer>

Вы можете попробовать async, но я уверен, что он не работает со встроенным скриптом. Если вы загружаете файл javascript facebook, вы также можете асинхронизировать его.

<script async>

Таким образом, вам не понадобится скорость страницы для отсрочки

person Andrew Lazarus    schedule 29.06.2018
comment
Спасибо за ваш ответ, я проверю ваше решение и напишу вам обратно. - person Nurjan; 29.06.2018