Досить поширена проблема в інтернет-магазинах з WooCommerce - це надмірне завантаження процесора AJAX-запитами кошика. Fix wc-ajax = get_refreshed_fragments High CPU Usage.
Надмірне завантаження процесів CPU будь-яким поточним сценарієм не робить нічого, крім зменшує швидкість завантаження сторінок інтернет-магазину, щоб забезпечити низький рейтинг SEO та оцінку взаємодії з користувачем. Менше замовлень на сайті.
Купріни
Що таке і для чого використовується запит wc-ajax = get_refreshed_fragments
Для загального розуміння, за допомогою цього сценарію AJAX, WooCommerce дозволяє додавання товарів у кошик і оновлення кошика без оновлення веб-сторінки. Кошик для покупок асинхронно спілкуватиметься з хост-сервером через AJAX (асинхронний JavaScript і XML).
За замовчуванням, /?wc-ajax=get_refreshed_fragments
присутній на всіх сторінках сайту, щоб стежити за діями Add to Cart користувача та зміни, які можуть відображатися у віджеті кошика для покупок. Саме ці дії запускають процеси CPU і сповільнити швидкість завантаження веб-сторінок. Іноді на 4-5 секунд, що дуже багато.
Виправлено wc-ajax = get_refreshed_fragments High CPU Використання (вимкнути фрагменти кошика AJAX)
Якщо ви не використовуєте динамічний віджет кошика в шапці або в іншій постійній області магазину, краще відмовитися від динамічного оновлення та відстеження дій додавання/оновлення кошика.
Ви можете вимкнути його AJAX Cart Fragments на сторінках архіву та перенаправляти користувачів безпосередньо до кошика для покупок, коли продукт додається до кошика.
WooCommerce → Settings → Products.
Якщо ви хочете залишити цей скрипт активованим "Add to Cart Ajax", але не для запуску на першій сторінці магазину, відредагуйте файл functions.php поточної теми та додайте такий код:
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 у вас також є блог або інші персоналізовані сторінки, на яких немає продуктів, гарною ідеєю буде відключити фрагменти з них.
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');
}
Повна дезактивація і fix wc-ajax = get_refreshed_fragments High CPU Usage (Disable AJAX Cart Fragments) це робиться за допомогою такого коду:
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_account_page () &&! 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');
}
}
}
Вибравши один з цих способів (особливо останній), ви відразу помітите збільшення швидкості завантаження інтернет-магазину і значно меншу витрату ресурсів на процесорі (CPU).