TechBlogSD - Все для WordPress и WEB разработки
WEB и WordPress инструкции, новости, обзоры тем и плагинов

Исправить медленную загрузку страницы с помощью WooCommerce wc-ajax = get_refreshed_fragments

47

WooCommerce – один из популярных плагинов для превращения вашего сайта WordPress в интернет-магазин. Большинство популярных тем предлагают встроенную функцию магазина с помощью плагина WooCommerce. Мы также используем WooCommerce на некоторых наших сайтах. Недавно, когда мы проводили проверку скорости страницы на GTmetrix и pingdom, мы обнаружили, что компонент «wc-ajax = get_refreshed_fragments» загружается примерно за секунду. После анализа мы обнаружили, что в большинстве других случаев для этого требуется даже 5–10 секунд. страница для загрузки. Если у вас возникла проблема со скоростью загрузки страницы с вызовами WooCommerce Ajax, то вот решения, которые помогут исправить эту проблему для различных сценариев.

Исправить проблему WooCommerce AJAX

В этой статье мы рассмотрели следующие темы о WooCommerce wc-ajax = get_refreshed_fragments:

  1. Что такое wc-ajax = get_refreshed_fragments?
  2. Проблема загрузки страницы с вызовами администратора Ajax
  3. Как исправить медленную загрузку страницы в WooCommerce с помощью админки Ajax?
    1. Отключите только фрагментацию корзины на главной странице вашего сайта
    2. Отключить только фрагментацию корзины на главной странице и в публикациях
    3. Отключить все стили и скрипты WooCommerce на всех страницах, кроме страниц магазина.
  4. Использование плагина для остановки вызова Ajax администратора WooCommerce
  5. Тестирование скорости страницы
  6. Остановка API пульса WordPress

1 Что такое wc-ajax = get_refreshed_fragments?

Нам потребовалось некоторое время, чтобы понять, на самом деле обновленные фрагменты в диаграмме скорости страницы вызываются из плагина WooCommerce. Поскольку наш сайт размещался на SiteGround Cloud VPS, влияние было меньше, и вызов WooCommerce Ajax занимал около секунды. Если вы размещаете на общем хостинге, таком как Bluehost, вы можете заметить более длительную задержку загрузки страницы где-то от 3 до 10 секунд.

Ниже приведен снимок экрана с pingdom, показывающий долгое время ожидания загрузки «wc-ajax = get_refreshed_fragments» на странице. Вы также можете увидеть, что этот скрипт будет указан в списке проблем с блокировкой рендеринга в инструменте Google PageSpeed ​​Insights и найти его под диаграммой водопада в GTmetrix.

Проблема с загрузкой страницы WooCommerce Ajax

Обычно WooCommerce пытается собрать информацию о корзине покупок, вызывая скрипт, и на выполнение задачи уходит много времени. Плагин получает некэшированные сведения о корзине на каждой странице, чтобы показать последние элементы корзины, вызывая Ajax администратора. Вы можете увидеть сценарий примерно так, как показано ниже, на каждой странице вашего сайта:

<script type='text/javascript'> /* <![CDATA[ */ var wc_add_to_cart_params = {"ajax_url":"/wp-admin/admin-ajax.php","wc_ajax_url":"/?wc-ajax=%%endpoint%%","i18n_view_cart":"View Cart","cart_url":"http://localhost/shop/cart/","is_cart":"","cart_redirect_after_add":"yes"}; /* ]]> */ </script>

Это в среде localhost, и вы должны увидеть код с вашим собственным URL-адресом.

Исправить медленную загрузку страницы с помощью WooCommerce wc-ajax = get_refreshed_fragments

Фрагменты Ajax WooCommerce в исходном коде страницы

2 Админ. Вызовы Ajax и загрузка страницы

WooCommerce использует этот вызов Ajax администратора фрагментации корзины для обновления элементов и общего количества в корзине без обновления страницы. Вызов admin Ajax на каждой странице значительно замедлит время загрузки вашей страницы, а также потребляет много ресурсов сервера. Другая проблема заключается в том, что плагин выполняет это действие даже на странице, на которой нет корзины покупок или сведений о продукте.

На приведенном выше снимке экрана показано, что проблема существует на странице «О нас», где отсутствуют доступные компоненты WooCommerce. Таким образом, удаление корзины покупок на странице не поможет улучшить скорость загрузки страницы. Что нам нужно, так это отключить обновление корзины, если не отображаются корзины покупок или товары.


Связанная статья WooCommerce:

3 Как исправить проблему с wc-ajax = get_refreshed_fragments?

Проблема должна быть устранена путем удаления сценария из очереди путем изменения файла functions.php вашей темы. Вы можете изменить functions.php через админ панель WordPress или используя FTP. Вместо изменения файла functions.php создайте дочернюю тему и добавьте в нее дополнительные функции. Это поможет вам сохранить изменения при обновлении темы. Есть три варианта удаления из очереди скрипта фрагментации корзины WooCommerce Ajax.

  • Отключите только фрагментацию корзины на главной странице вашего сайта
  • Отключить только фрагментацию корзины на главной странице и в публикациях
  • Отключите все стили и скрипты WooCommerce на всех страницах, кроме страниц магазина.

Давайте подробно обсудим все три варианта, сделаем только одно необходимое для вас.

3.1. Отключить фрагментацию корзины на главной странице

В панели администратора WordPress перейдите в «Внешний вид> Редактор» и найдите файл functions.php. Добавьте следующий код в конец файла.

/** Disable Ajax Call from WooCommerce */ add_action( 'wp_enqueue_scripts', 'dequeue_woocommerce_cart_fragments', 11); function dequeue_woocommerce_cart_fragments() { if (is_front_page()) wp_dequeue_script('wc-cart-fragments'); }

Он должен выглядеть в редакторе, как показано ниже. После вставки кода нажмите «Обновить файл», чтобы сохранить изменения.

Исправить медленную загрузку страницы с помощью WooCommerce wc-ajax = get_refreshed_fragments

Изменение PHP-файла функций темы

Если вы хотите использовать FTP, войдите на свой сервер, используя учетную запись FTP. Перейдите в «/ wp-content / your-theme /» и найдите файл «functions.php». Отредактируйте и добавьте приведенный выше код в конец файла и загрузите измененный файл обратно на сервер.

После обновления файла перейдите в меню «WooCommerce> Настройки» и перейдите в раздел «Дисплей» на вкладке «Продукты». Установите флажок напротив опции «Перенаправлять на страницу корзины после успешного добавления».

Исправить медленную загрузку страницы с помощью WooCommerce wc-ajax = get_refreshed_fragments

Включить перенаправление на страницу корзины

Это поможет покупателю перейти на главную страницу корзины вместо того, чтобы долго ждать, пока товар будет добавлен в корзину. В противном случае, хотя элемент добавлен, ваша корзина покупок может не отображать обновленные сведения, когда вы находитесь на той же странице, где отключен скрипт фрагментации корзины.

3.2. Отключить фрагментацию корзины на главной странице и в публикациях

Приведенный выше код отключит скрипт фрагмента корзины только на статической главной странице. Если вы хотите отключить скрипт для всех сообщений, попробуйте добавить приведенный ниже код в файл function.php вашей темы.

/** Disable Ajax Call from WooCommerce on front page and posts*/ add_action( 'wp_enqueue_scripts', 'dequeue_woocommerce_cart_fragments', 11); function dequeue_woocommerce_cart_fragments() { if (is_front_page() || is_single()) wp_dequeue_script('wc-cart-fragments'); }

3.3. Отключение всех стилей и скриптов WooCommerce для всего сайта

WooCommerce – это ресурсоемкий плагин, который может использовать ресурсы вашего сервера для загрузки всех соответствующих таблиц стилей и скриптов. Если у вас мало продуктов с сотнями тысяч сообщений в блогах, имеет смысл удалить из очереди или отключить все материалы, относящиеся к WooCommerce, в сообщениях в блогах. Другими словами, вы можете разрешить скрипты WooCommerce только на соответствующих страницах магазина, чтобы все остальные страницы загружались быстрее.

Добавьте приведенный ниже код в свой файл functions.php на основе Github. Код сначала проверит, существует ли плагин WooCommerce на вашем сайте, а затем отключит стили и скрипты на всех страницах, кроме страниц товаров, корзины и оформления заказа. Это поможет удалить вызовы «wc-ajax = get_refreshed_fragments» со всех постов / страниц, кроме страниц, связанных с WooCommerce.

/** Disable All WooCommerce Styles and Scripts Except Shop Pages*/ add_action( 'wp_enqueue_scripts', 'dequeue_woocommerce_styles_scripts', 99 ); function dequeue_woocommerce_styles_scripts() { if (function_exists( 'is_woocommerce')) { if (! is_woocommerce() &&! is_cart() &&! is_checkout()) { # Styles wp_dequeue_style( 'woocommerce-general' ); wp_dequeue_style( 'woocommerce-layout' ); wp_dequeue_style( 'woocommerce-smallscreen' ); wp_dequeue_style( 'woocommerce_frontend_styles' ); wp_dequeue_style( 'woocommerce_fancybox_styles' ); wp_dequeue_style( 'woocommerce_chosen_styles' ); wp_dequeue_style( 'woocommerce_prettyPhoto_css' ); # Scripts wp_dequeue_script( 'wc_price_slider' ); wp_dequeue_script( 'wc-single-product' ); wp_dequeue_script( 'wc-add-to-cart' ); wp_dequeue_script( 'wc-cart-fragments' ); wp_dequeue_script( 'wc-checkout' ); wp_dequeue_script( 'wc-add-to-cart-variation' ); wp_dequeue_script( 'wc-single-product' ); wp_dequeue_script( 'wc-cart' ); wp_dequeue_script( 'wc-chosen' ); wp_dequeue_script( 'woocommerce' ); wp_dequeue_script( 'prettyPhoto' ); wp_dequeue_script( 'prettyPhoto-init' ); wp_dequeue_script( 'jquery-blockui' ); wp_dequeue_script( 'jquery-placeholder' ); wp_dequeue_script( 'fancybox' ); wp_dequeue_script( 'jqueryui' ); } } }

Предупреждение: не забудьте добавить только один блок кода из трех вышеперечисленных вариантов. Не добавляйте несколько или все коды в файл functions.php. Когда вы отключаете скрипты, также отключите опцию «Включить Ajax кнопки добавления в корзину в архивах», доступную в разделе «Отображение» меню «WooCommerce> Настройки».

4 Использование плагинов для остановки вызовов Ajax для администраторов WooCommerce

Если вы не знакомы с изменением файла темы или созданием дочерней темы, то есть плагины, которые сделают эту работу за вас. Первый вариант – использовать премиальный плагин WP Rocket. Вы можете приобрести WP Rocket, установить и активировать плагин из панели администратора WordPress. Этот плагин не имеет специальных настроек для WooCommerce. Простая активация плагина отключит фрагментацию корзины WooCommerce на всех страницах вашего сайта. Он работает с логикой проверки, содержит ли ваша страница вызов фрагмента Ajax в исходном коде.

Если да, то при загрузке страницы он проверит, что корзина пуста. Когда оба этих условия выполнены, WP Rocket будет кэшировать страницу временно и обслуживать ее при следующей загрузке. Если вы обнаружите какие-либо проблемы, вы можете использовать вспомогательный плагин для отключения кеширования фрагментов Ajax.

Плагины, такие как W3 Total Cache, также предлагают кеширование фрагментов в качестве расширения премиум-класса. Тем не менее, вам нужно заплатить годовую подписку на 99 долларов, чтобы получить премиум-функции. Вместо этого WP Rocket стоит 49 долларов в год с простой настройкой, и вы также можете получить скидку 10%, подписавшись на их информационный бюллетень.

5 Тестирование скорости страницы

Если вы добавили код вручную, обязательно очистите кеш плагина кеширования и очистите кеширование лака на сервере, если оно доступно. Точно так же очистите все уровни кеширования, если вы установили плагин WP Rocket. После этого проверьте Google PageSpeed ​​Insights, и вы не должны видеть скрипт «wc-ajax = get_refreshed_fragments» в разделе JavaScript, блокирующем рендеринг. Вы также можете легко получить 100 баллов на мобильном устройстве и компьютере, когда время блокировки составляет 0 мс.

Исправить медленную загрузку страницы с помощью WooCommerce wc-ajax = get_refreshed_fragments

Отключить стили и скрипты WooCommerce

Также в pingdom скрипт WooCommerce, вызывающий «wc-ajax = get_refreshed_fragments», не должен отображаться в разделе «Запросы файлов». Скорость вашей страницы должна быть заметно увеличена после отключения сценария WooCommerce Ajax.

6 Остановка WordPress Heartbeat API

Плагин WooCommerce добавляет множество привлекательных виджетов на панели инструментов, отображающих продажи и статистику в реальном времени. Однако это будет дорого стоить вам, если перетащить скорость загрузки вашего сайта. Виджеты панели управления динамически обновляют контент с помощью вызовов администратора Ajax, аналогично фрагментации корзины в WooCommerce. Это делается с помощью стандартного WordPress API, называемого heartbeat API.

Как правило, мы не рекомендуем размещать эти динамические виджеты на панели управления. Вы можете просто отключить вызовы admin-ajax или API пульса WordPress, чтобы снизить нагрузку на сервер и улучшить скорость загрузки страницы вашего сайта WordPress. Такие плагины, как WP Rocket, могут помочь отключить API сердцебиения из вашей панели администратора.

Заключительные слова

WooCommerce – один из простых способов создать свой интернет-магазин на WordPress. Но интернет-магазинам нужны определенные базовые функции, такие как динамическое обновление корзины. По нашему опыту, мы видели, что 90% пользователей WooCommerce продают простые цифровые товары. Их магазин – это просто дополнение к большому блогу или информационному сайту. В этом случае мы настоятельно рекомендуем отключить Ajax-вызовы администратора, чтобы все остальные страницы сайта загружались быстрее, не влияя на взаимодействие с пользователем.

Если у вас есть полноценный магазин, вам понадобится функция фрагментации корзины, чтобы динамически обновлять элементы корзины без обновления страницы. В таком случае убедитесь, что у вас есть качественный хостинг-сервер вместе с плагинами кеширования, такими как WP Rocket или W3 Total Cache, у которых есть опция премиум-класса для кэширования фрагментов страницы для повышения скорости страницы.

Источник записи: webnots.com
Leave A Reply

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. ПринимаюПодробнее