Почему так долго грузит скрипт метрики и jquery?

после обновления заметил интересную картину: Метрика и jQuery CDN вместе весят меньше пикселя Фейсбука, а систему вешают гораздо ощутимее. Кто-нибудь знает работающий рецепт?

2 лайка

У вас еще быстро :slight_smile:

Не совсем понимаю: скорость ответа/загрузки jQuery CDN - это же по больше части относится к хостингу?

Тема Uni2, хостинг @zahidhost :

1 лайк

Обратите внимание что загрузка скрипта происходит с внешнего CDN сервиса code.jquery.com , потому к хостингу отношения оно не имеет. Для своих пользователей рекомендуем использовать локальные файлы так как по умолчанию мы уже используем свой CDN сервис который менее нагружен чем публичные.

А что это за магия в файле scripts.tpl? Не очень понятно. Как его скорректировать правильно, чтобы jquery загружались со своего CDN Zahist?

{if !$config.tweaks.dev_js}
<script src="https://code.jquery.com/jquery-3.3.1.min.js"
        integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
        crossorigin="anonymous"
        data-no-defer
></script>
<script src="https://code.jquery.com/jquery-migrate-3.0.1.min.js"
        integrity="sha256-F0O1TmEa4I8N24nY0bya59eP6svWcshqX1uzwaWC4F4="
        crossorigin="anonymous"
        data-no-defer
></script>
<script data-no-defer>
    if (!window.jQuery) {
        document.write('{script src="js/lib/jquery/jquery-3.3.1.min.js" no-defer=true escape=true}');
        document.write('{script src="js/lib/jquery/jquery-migrate-3.0.1.min.js" no-defer=true escape=true}');
    }
</script>
{/if}

{scripts}

{if $config.tweaks.dev_js}
    {script src="js/lib/jquery/jquery-3.3.1.min.js"}
    {script src="js/lib/jquery/jquery-migrate-3.0.1.min.js"}
{/if}

Попробуйте поменять

{if !$config.tweaks.dev_js}
<script src="https://code.jquery.com/jquery-3.3.1.min.js"
        integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
        crossorigin="anonymous"
        data-no-defer
></script>
<script src="https://code.jquery.com/jquery-migrate-3.0.1.min.js"
        integrity="sha256-F0O1TmEa4I8N24nY0bya59eP6svWcshqX1uzwaWC4F4="
        crossorigin="anonymous"
        data-no-defer
></script>
<script data-no-defer>
    if (!window.jQuery) {
        document.write('{script src="js/lib/jquery/jquery-3.3.1.min.js" no-defer=true escape=true}');
        document.write('{script src="js/lib/jquery/jquery-migrate-3.0.1.min.js" no-defer=true escape=true}');
    }
</script>
{/if}

на

{if !$config.tweaks.dev_js}
    {script src="js/lib/jquery/jquery-3.3.1.min.js"}
    {script src="js/lib/jquery/jquery-migrate-3.0.1.min.js"}
{/if}

Нужно будет скинуть кэш

1 лайк

Попробовал заменить - не работает. Просто перестают скрипты грузиться. Только текст и стили.

Киньте сюда все содержимое файла, которое у вас получилось

{*
{if !$config.tweaks.dev_js}
<script src="https://code.jquery.com/jquery-3.3.1.min.js"
        integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
        crossorigin="anonymous"
        data-no-defer
></script>
<script src="https://code.jquery.com/jquery-migrate-3.0.1.min.js"
        integrity="sha256-F0O1TmEa4I8N24nY0bya59eP6svWcshqX1uzwaWC4F4="
        crossorigin="anonymous"
        data-no-defer
></script>
<script data-no-defer>
    if (!window.jQuery) {
        document.write('{script src="js/lib/jquery/jquery-3.3.1.min.js" no-defer=true escape=true}');
        document.write('{script src="js/lib/jquery/jquery-migrate-3.0.1.min.js" no-defer=true escape=true}');
    }
</script>
{/if}
*}

{if !$config.tweaks.dev_js}
{script src="js/lib/jquery/jquery-3.3.1.min.js"}
{script src="js/lib/jquery/jquery-migrate-3.0.1.min.js"}
{/if}

{scripts}

{if $config.tweaks.dev_js}
    {script src="js/lib/jquery/jquery-3.3.1.min.js"}
    {script src="js/lib/jquery/jquery-migrate-3.0.1.min.js"}
{/if}

{script src="js/lib/jqueryui/jquery-ui.custom.min.js" no-defer=true}

{script src="js/lib/modernizr/modernizr.custom.js"}
{script src="js/tygh/core.js"}
{script src="js/tygh/ajax.js"}
{script src="js/tygh/history.js"}
{script src="js/lib/autonumeric/autoNumeric.js"}
{script src="js/lib/appear/jquery.appear-1.1.1.js"}

{if !$runtime.customization_mode.live_editor}
{script src="js/lib/tools/tooltip.min.js"}
{/if}

{script src="js/tygh/editors/`$settings.Appearance.default_wysiwyg_editor`.editor.js"}

{script src="js/tygh/responsive.js"}

{if $runtime.customization_mode.live_editor}
{script src="js/lib/autosize/jquery.autosize.js"}
{script src="js/tygh/live_editor_mode.js"}
{/if}

<script type="text/javascript">
(function(_, $) {

_.tr({
    cannot_buy: '{__("cannot_buy")|escape:"javascript"}',
    no_products_selected: '{__("no_products_selected")|escape:"javascript"}',
    error_no_items_selected: '{__("error_no_items_selected")|escape:"javascript"}',
    delete_confirmation: '{__("delete_confirmation")|escape:"javascript"}',
    text_out_of_stock: '{__("text_out_of_stock")|escape:"javascript"}',
    items: '{__("items")|escape:"javascript"}',
    text_required_group_product: '{__("text_required_group_product")|escape:"javascript"}',
    save: '{__("save")|escape:"javascript"}',
    close: '{__("close")|escape:"javascript"}',
    notice: '{__("notice")|escape:"javascript"}',
    warning: '{__("warning")|escape:"javascript"}',
    error: '{__("error")|escape:"javascript"}',
    empty: '{__("empty")|escape:"javascript"}',
    text_are_you_sure_to_proceed: '{__("text_are_you_sure_to_proceed")|escape:"javascript"}',
    text_invalid_url: '{__("text_invalid_url")|escape:"javascript"}',
    error_validator_email: '{__("error_validator_email")|escape:"javascript"}',
    error_validator_phone: '{__("error_validator_phone")|escape:"javascript"}',
    error_validator_phone_mask: '{__("error_validator_phone_mask")|escape:"javascript"}',
    error_validator_integer: '{__("error_validator_integer")|escape:"javascript"}',
    error_validator_multiple: '{__("error_validator_multiple")|escape:"javascript"}',
    error_validator_password: '{__("error_validator_password")|escape:"javascript"}',
    error_validator_required: '{__("error_validator_required")|escape:"javascript"}',
    error_validator_zipcode: '{__("error_validator_zipcode")|escape:"javascript"}',
    error_validator_message: '{__("error_validator_message")|escape:"javascript"}',
    text_page_loading: '{__("text_page_loading")|escape:"javascript"}',
    error_ajax: '{__("error_ajax")|escape:"javascript"}',
    text_changes_not_saved: '{__("text_changes_not_saved")|escape:"javascript"}',
    text_data_changed: '{__("text_data_changed")|escape:"javascript"}',
    placing_order: '{__("placing_order")|escape:"javascript"}',
    file_browser: '{__("file_browser")|escape:"javascript"}',
    browse: '{__("browse")|escape:"javascript"}',
    more: '{__("more")|escape:"javascript"}',
    text_no_products_found: '{__("text_no_products_found")|escape:"javascript"}',
    cookie_is_disabled: '{__("cookie_is_disabled")|escape:"javascript"}',
    insert_image: '{__("insert_image")|escape:"javascript"}',
    image_url: '{__("image_url")|escape:"javascript"}',
    loading: '{__("loading")|escape:"javascript"}'
});

$.extend(_, {
    index_script: '{$config.customer_index|escape:javascript nofilter}',
    changes_warning: /*'{$settings.Appearance.changes_warning|escape:javascript nofilter}'*/'N',
    currencies: {
        'primary': {
            'decimals_separator': '{$currencies.$primary_currency.decimals_separator|escape:javascript nofilter}',
            'thousands_separator': '{$currencies.$primary_currency.thousands_separator|escape:javascript nofilter}',
            'decimals': '{$currencies.$primary_currency.decimals|escape:javascript nofilter}'
        },
        'secondary': {
            'decimals_separator': '{$currencies.$secondary_currency.decimals_separator|escape:javascript nofilter}',
            'thousands_separator': '{$currencies.$secondary_currency.thousands_separator|escape:javascript nofilter}',
            'decimals': '{$currencies.$secondary_currency.decimals|escape:javascript nofilter}',
            'coefficient': '{$currencies.$secondary_currency.coefficient}'
        }
    },
    default_editor: '{$settings.Appearance.default_wysiwyg_editor}',
    default_previewer: '{$settings.Appearance.default_image_previewer}',
    current_path: '{$config.current_path|escape:javascript nofilter}',
    current_location: '{$config.current_location|escape:javascript nofilter}',
    images_dir: '{$images_dir}',
    notice_displaying_time: {if $settings.Appearance.notice_displaying_time}{$settings.Appearance.notice_displaying_time}{else}0{/if},
    cart_language: '{$smarty.const.CART_LANGUAGE}',
    language_direction: '{$language_direction}',
    default_language: '{$smarty.const.DEFAULT_LANGUAGE}',
    cart_prices_w_taxes: {if ($settings.Appearance.cart_prices_w_taxes == 'Y')}true{else}false{/if},
    regexp: [],
    current_url: '{$config.current_url|fn_url|escape:javascript nofilter}',
    current_host: '{$config.current_host|escape:javascript nofilter}',
    init_context: '{$smarty.request.init_context|escape:javascript nofilter}',
    phone_validation_mode: '{$settings.Appearance.phone_validation_mode}'
});

{if $live_editor_objects}
    $.extend(_, {
        live_editor_mode: true,
        live_editor_objects: {$live_editor_objects|json_encode nofilter}
    });
{/if}

{if !$smarty.request.init_context}

    $(document).ready(function(){
        $.runCart('C');
    });

{/if}

{if $config.tweaks.anti_csrf}
    // CSRF form protection key
    _.security_hash = '{""|fn_generate_security_hash}';
{/if}
}(Tygh, Tygh.$));
</script>

{script src="js/lib/maskedinput/jquery.maskedinput.min.js"}

{script src="js/lib/inputmask/jquery.inputmask.min.js"}
{script src="js/lib/jquery-bind-first/jquery.bind-first-0.2.3.js"}
{script src="js/lib/inputmask-multi/jquery.inputmask-multi.js"}
{script src="js/lib/owlcarousel/owl.carousel.min.js"}

{script src="js/tygh/phone_mask.js"}


{hook name="index:scripts"}
{/hook}

{/scripts}

Должно работать. Кэш весь почистили? Не только шаблоны, но и системный?

Да, кэш чистил удалением папки cash. Отправил вам личное сообщение.

Заработало, но немного по другому нужно было:

{if !$config.tweaks.dev_js}
    <script src="js/lib/jquery/jquery-3.3.1.min.js"></script>
    <script src="js/lib/jquery/jquery-migrate-3.0.1.min.js"></script>
{/if}

JQuery теперь грузиться с локальной установки, но вот время выполнения jquery-3.3.1.min.js ну очень долгое. От чего это зависит?

1 лайк

Приветствую! Вам удалось решить вопрос с долгим временем?

1 лайк

тоже, кстати, интересно

А кто подскажет что сделать с этим скриптом(чат) чтобы он не мешал загрузке? например грузился через 3 секунды после того как загрузился сайт.

<script>
window.replainSettings = { id: 'de2afea5-6711-4a66-bd24-4b0235d64d80' };
(function (u){var s=document.createElement('script');s.type='text/javascript';s.async=true;s.src=u;
var x=document.getElementsByTagName('script')[0];x.parentNode.insertBefore(s,x);
})('https://widget.replain.cc/dist/client.js');
</script>

То же самое, переделал запуск jquery с локальной установки, картина как на скрине выше. Мне кажется только хуже стало.

Сделал вызов с CDN Яндекса:
<script src="https://yastatic.net/jquery/3.3.1/jquery.min.js"></script>

Вроде получше стало. У кого на хостинге нет своего CDN, лучше наверное оставить стандартный код, у самого JQuery код уже на CDN расположен.

Здраствуйте. Также сделала такое улучшение, как тут написано:
{if !$config.tweaks.dev_js}
script asynс src=“js/lib/jquery/jquery-3.3.1.min.js”>
script async src=“js/lib/jquery/jquery-migrate-3.0.1.min.js”>
{/if}

но еще добавила, async, для оптимизации в скрипт и после чего jquery не подгружает и пропал баннер и карусели а по логике должно адекватно работать?

Нужно быть осторожным с async для jQuery. Т. к. практически все скрипты завязаны на него. И он должен загружаться перед всеми ними для их корректной работы.

Спасибо за рекомендации)

Добрый день,

Как решили проблему долгой загрузки jQuery CDN? Сейчас это один из главных факторов, на которые ругается Google Pagespeed Insights. Время блокировки основного потока показывает 10-20 сек.