Jak przyspieszyć stronę wyłączając odświeżanie koszyka woocoomerce
Bardzo często zdarza się, że nasza strona z woocommerce działa wolno. Narzędzia do testowania prędkości typu GTMetrix, często pokazują, że wpływ na prędkość ładowania strony może mieć skrypt wc-ajax=get_refreshed_fragments. Generuje on opóźnienia i obciążenie serwera. Do czego jest on potrzebny, czy jest potrzebny i jak go wyłączyć?
Co to są te fragmenty koszyka Ajax Wocommerce
Ajax ( AJAX = Asynchronous JavaScript And XML ) to technika, która w skrócie umożliwia uruchamianie funkcji bez odświeżania stron internetowych.
Za pomocą tej funkcjonalności na stronie sklepu WooCommerce możesz dodawać produkty do koszyka (i aktualizować koszyk) bez wymuszania ponownego ładowania strony; Ajax działa w tle i komunikuje się z serwerem „asynchronicznie”.
A teraz czym są fragmenty koszyka Ajax WooCommerce i co reprezentuje adres URL „ /?wc-ajax=get_refreshed_fragments ”.
Krótko mówiąc, nawet na małych sklepach, WooCommerce próbuje „uzyskać” szczegóły koszyka, aby mógł być gotowy do „przeliczenia” wartości zakupów za każdym razem, gdy coś jest zrobione (lub nie zrobione!) na danej stronie WordPress.
Dzięki temu WooCommerce może aktualizować widżet koszyka i natychmiast „słuchać” dowolnego zdarzenia, które może wymagać aktualizacji koszyka (np. wciśnięcie guzika dodaj do koszyka).
Zasadniczo WooCommerce wywołuje „ /?wc-ajax=get_refreshed_fragments ” w celu asynchronicznej aktualizacji pozycji koszyka i sumy koszyka, tj. bez konieczności odświeżania odwiedzanej strony internetowej.
Ajax z punktu widzenia programistycznego jest świetnym rozwiązaniem, jednak przez to, że cały czas działa w tle może powodować spadek wydajności i konflikt wtyczek WordPressa.
Jak wyłączyć fragmentację koszyka na stronie głównej
Aby zaktualizować koszyk na każdej stronie witryny, WooCommerce uruchamia funkcję Ajax za każdym razem. Nawet na stronach blogowych, kontaktowej czy na stronie głównej.
Jeśli nasz motyw nie zawiera rozwijanego widżetu koszyka WooCommerce i jeśli nie mamy produktów, które można dodać do koszyka na określonej stronie internetowej, lepiej usunąć całą funkcjonalność Ajax.
Co więcej, jeśli wybierzesz w ustawieniach WooCommerce przekierowanie użytkowników do Koszyka po dodaniu dowolnego produktu do Koszyka, zdecydowanie wymuszasz przekierowanie strony (do strony Koszyk), więc posiadanie aktywnych fragmentów koszyka Ajax jest zupełnie bezcelowe.
add_action( 'wp_enqueue_scripts', 'wylacz_woocommerce_cart_fragments', 11);
function wylacz_woocommerce_cart_fragments() {
if (is_front_page()) wp_dequeue_script('wc-cart-fragments');
}
Jak wyłączyć fragmentację koszyka na stronie głównej i w postach
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');
}
Wyłączanie wszystkich stylów i skryptów WooCommerce w całej witrynie (poza stronami sklepowymi)
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' );
}
}
}