TechBlogSD - Todo para WordPress y desarrollo WEB
Instrucciones de WEB y WordPress, noticias, reseñas de temas y complementos

Arregle la carga lenta de la página con WooCommerce wc-ajax = get_refreshed_fragments

5

WooCommerce es uno de los complementos populares para convertir su sitio de WordPress en una tienda en línea. La mayoría de los temas populares ofrecen una función de tienda integrada con la ayuda del complemento WooCommerce. También usamos WooCommerce en algunos de nuestros sitios. Recientemente, cuando hicimos una verificación de la velocidad de la página en GTmetrix y pingdom, descubrimos que el componente "wc-ajax = get_refreshed_fragments" tardaba aproximadamente un segundo en cargarse. Después del análisis, descubrimos que en la mayoría de los otros casos, incluso toma de 5 a 10 segundos para la página para cargar.Si tiene problemas de velocidad de página con las llamadas de WooCommerce Ajax, aquí están las soluciones para solucionar el problema en diferentes escenarios.

Solucionar el problema de WooCommerce AJAX

Hemos cubierto los siguientes temas sobre WooCommerce wc-ajax = get_refreshed_fragments en este artículo:

  1. ¿Qué es wc-ajax = get_refreshed_fragments?
  2. Problema de carga de página con llamadas de administrador Ajax
  3. ¿Cómo solucionar la carga lenta de la página en WooCommerce con el administrador Ajax?
    1. Deshabilite solo la fragmentación del carrito en la página principal de su sitio
    2. Desactive solo la fragmentación del carrito en la página principal y las publicaciones
    3. Deshabilite todos los estilos y scripts de WooCommerce en todas las páginas excepto en las páginas de la tienda
  4. Uso del complemento para detener la llamada Ajax del administrador de WooCommerce
  5. Probando la velocidad de la página
  6. Detener la API de latido de WordPress

1 ¿Qué es wc-ajax = get_refreshed_fragments?

Nos tomó algo de tiempo comprender que en realidad los fragmentos actualizados en el gráfico de velocidad de la página se llaman desde el complemento WooCommerce. Como nuestro sitio estaba alojado en SiteGround Cloud VPS, el impacto fue menor y la llamada de WooCommerce Ajax tardaba alrededor de un segundo. Si está alojando en un alojamiento compartido como Bluehost, es posible que observe un mayor retraso en la carga de la página en algún lugar de 3 a 10 segundos.

A continuación se muestra la captura de pantalla de pingdom que muestra el largo tiempo de espera para cargar "wc-ajax = get_refreshed_fragments" en la página. También puede ver que este script se incluirá en un problema de bloqueo de renderizado en la herramienta Google PageSpeed ​​Insights y lo encontrará en el gráfico de cascada en GTmetrix.

Problema de carga de la página de WooCommerce Ajax

Básicamente, WooCommerce intenta recopilar los detalles del carrito de compras llamando al script y lleva mucho tiempo completar la tarea. El complemento obtiene los detalles del carrito sin caché en cada página para mostrar los últimos elementos del carrito llamando al administrador Ajax. Puede ver el script algo parecido a continuación en cada página de su sitio:

<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>

Esto está en el entorno localhost y debería ver el código con su propia URL.

Arregle la carga lenta de la página con WooCommerce wc-ajax = get_refreshed_fragments

Fragmentos de WooCommerce Ajax en la fuente de la página

2 Admin. Llamadas Ajax y carga de páginas

WooCommerce utiliza esta llamada Ajax de administrador de fragmentación de carrito para actualizar los artículos y el total en el carrito sin actualizar la página. Llamar al administrador Ajax en cada página retrasará considerablemente el tiempo de carga de su página y también consumirá una gran cantidad de recursos del servidor. El otro problema es que el complemento realiza esta acción incluso en una página donde no hay detalles relacionados con el carrito de compras o el producto.

La captura de pantalla anterior muestra que el problema existe en la página "Acerca de nosotros" donde no hay componentes de WooCommerce disponibles. Por lo tanto, eliminar el carrito de compras en la página no ayudará a mejorar la velocidad de carga de la página. Lo que necesitamos es deshabilitar la actualización del carrito donde no se muestran carritos de compras o productos.


Artículo relacionado de WooCommerce:

3 ¿Cómo solucionar el problema con wc-ajax = get_refreshed_fragments?

El problema debe solucionarse retirando la secuencia de comandos modificando el archivo functions.php de su tema. Puede modificar functions.php a través del panel de administración de WordPress o usando FTP. En lugar de modificar el archivo functions.php, cree un tema hijo y agregue funciones adicionales en el tema hijo. Esto le ayudará a conservar los cambios cuando actualice el tema. Hay tres opciones para retirar el script de fragmentación del carrito de WooCommerce Ajax.

  • Deshabilite solo la fragmentación del carrito en la página principal de su sitio
  • Desactive solo la fragmentación del carrito en la página principal y las publicaciones
  • Deshabilite todos los estilos y scripts de WooCommerce en todas las páginas excepto en las páginas de la tienda.

Permítanos discutir las tres opciones en detalle, hagamos solo una cosa requerida para usted.

3.1. Deshabilitar la fragmentación del carrito en la página principal

En el panel de administración de WordPress, vaya a "Apariencia> Editor" y localice el archivo functions.php. Agregue el siguiente código al final del archivo.

/** 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'); }

Debería verse como a continuación en el editor, una vez pegado el código, haga clic en "Actualizar archivo" para guardar los cambios.

Arregle la carga lenta de la página con WooCommerce wc-ajax = get_refreshed_fragments

Modificación del archivo PHP de funciones de tema

Si desea utilizar FTP, inicie sesión en su servidor utilizando una cuenta FTP. Vaya a "/ wp-content / your-theme /" y busque el archivo "functions.php". Edite y agregue el código anterior al final del archivo y cargue el archivo modificado de nuevo al servidor.

Una vez que se actualice el archivo, vaya al menú "WooCommerce> Configuración" y vaya a la sección "Pantalla" en la pestaña "Productos". Active la casilla de verificación junto a la opción "Redirigir a la página del carrito después de una adición exitosa".

Arregle la carga lenta de la página con WooCommerce wc-ajax = get_refreshed_fragments

Habilitar la redirección a la página del carrito

Esto ayudará al cliente a ir a la página principal del carrito en lugar de esperar mucho tiempo después de que se agregue el artículo al carrito. De lo contrario, aunque se agregue el artículo, es posible que su carrito de compras no muestre los detalles actualizados cuando esté en la misma página que la secuencia de comandos de fragmentación del carrito está deshabilitada.

3.2. Deshabilitar la fragmentación del carrito en la portada y las publicaciones

El código anterior deshabilitará la secuencia de comandos del fragmento del carrito solo en la página principal estática. Si desea deshabilitar el script en todas las publicaciones, intente agregar el siguiente código en el archivo function.php de su tema.

/** 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. Deshabilitar todos los estilos y scripts de WooCommerce en todo el sitio

WooCommerce es un complemento intensivo en recursos que puede tomar los recursos de su servidor para cargar todas las hojas de estilo y scripts relevantes. Si tiene pocos productos con cientos de miles de publicaciones en el blog, entonces tiene sentido quitar de la cola o deshabilitar todas las cosas relevantes de WooCommerce en las publicaciones del blog. En otras palabras, solo puede permitir scripts de WooCommerce en las páginas relevantes de la tienda para que todas las demás páginas se carguen más rápido.

Agregue el siguiente código en su archivo functions.php basado en la esencia de Github. El código primero verificará si el complemento WooCommerce existe en su sitio y luego deshabilitará los estilos y scripts en todas las páginas, excepto en las páginas de productos, carritos y de pago. Esto ayudará a eliminar las llamadas "wc-ajax = get_refreshed_fragments" de todas las publicaciones / páginas, excepto las páginas relacionadas con 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' ); } } }

Advertencia: recuerde agregar solo uno de los bloques de código de las tres opciones anteriores. No agregue varios o todos los códigos en su archivo functions.php. Cuando deshabilita los scripts en todo el lado, también deshabilite la opción "Habilitar Ajax agregar botones al carrito en archivos" disponible en la sección "Pantalla" del menú "WooCommerce> Configuración".

4 Uso de complementos para detener las llamadas Ajax del administrador de WooCommerce

Si no está familiarizado con la modificación del archivo del tema o la creación de un tema hijo, existen complementos que pueden hacer el trabajo por usted. La primera opción es utilizar el complemento premium WP Rocket. Puede comprar WP Rocket, instalar y activar el complemento desde su panel de administración de WordPress. Este complemento no tiene ninguna configuración especial para WooCommerce. Simplemente activando el complemento deshabilitará la fragmentación del carrito de WooCommerce en todas las páginas de su sitio. Funciona con la lógica de verificar si su página contiene una llamada de fragmento Ajax en el código fuente.

En caso afirmativo, comprobará que el carrito está vacío al cargar la página. Cuando se cumplan ambas condiciones, WP Rocket almacenará la página en caché en forma transitoria y la publicará cuando la página se cargue la próxima vez. Si encuentra algún problema, puede usar el complemento auxiliar para desactivar el almacenamiento en caché de los fragmentos de Ajax.

Los complementos como W3 Total Cache también ofrecen caché de fragmentos como una extensión premium. Sin embargo, debe pagar una suscripción anual de $ 99 para obtener funciones premium. En cambio, WP Rocket cuesta $ 49 por año con una configuración fácil y también puede obtener un 10% de descuento suscribiéndose a su boletín.

5 Prueba de la velocidad de la página

Si ha agregado manualmente el código, asegúrese de purgar el caché de su complemento de almacenamiento en caché y purgar el almacenamiento en caché de barniz en el servidor si está disponible. Del mismo modo, borre todos los niveles de almacenamiento en caché si ha instalado el complemento WP Rocket. Después de eso, verifique en Google PageSpeed ​​Insights y no debería ver el script "wc-ajax = get_refreshed_fragments" en la sección de bloqueo de procesamiento de JavaScript. También puede obtener fácilmente una puntuación de 100 en dispositivos móviles y de escritorio cuando el tiempo de bloqueo es de 0 ms.

Arregle la carga lenta de la página con WooCommerce wc-ajax = get_refreshed_fragments

Deshabilitar estilos y scripts de WooCommerce

También en pingdom, el script de WooCommerce que llama "wc-ajax = get_refreshed_fragments" no debería estar visible en la sección "Solicitudes de archivos". La puntuación de velocidad de su página debería aumentar notablemente después de deshabilitar el script WooCommerce Ajax.

6 Detención de la API Heartbeat de WordPress

El complemento WooCommerce agrega muchos widgets de tablero atractivos que muestran ventas y estadísticas en vivo. Sin embargo, eso le costará mucho al arrastrar la velocidad de carga de su sitio. Los widgets del tablero actualizan el contenido dinámicamente usando llamadas Ajax de administrador similares a la fragmentación del carrito en WooCommerce. Esto se hace con la ayuda de la API de WordPress estándar llamada API de latido.

Generalmente no recomendamos tener esos widgets dinámicos en el tablero. Simplemente puede deshabilitar las llamadas admin-ajax o la API de latido de WordPress para reducir la carga del servidor y mejorar la velocidad de carga de la página de su sitio de WordPress. Los complementos como WP Rocket pueden ayudar a deshabilitar la API de latidos desde su panel de administración.

Ultimas palabras

WooCommerce es una de las formas fáciles de construir su tienda en línea en WordPress. Pero las tiendas en línea necesitan ciertas funciones básicas como la actualización dinámica del carrito. En nuestra experiencia, lo que hemos visto es que el 90% de los usuarios de WooCommerce venden productos digitales simples. Su tienda es simplemente un complemento del gran blog o sitio de contenido. En este caso, recomendamos encarecidamente deshabilitar las llamadas de administrador Ajax para que todas las demás páginas del sitio se carguen más rápido sin afectar la experiencia del usuario.

Si tiene una tienda completa, necesitará la función de fragmentación del carrito para actualizar dinámicamente los artículos del carrito sin actualizar la página. En tal caso, asegúrese de tener un servidor de alojamiento de calidad junto con complementos de almacenamiento en caché como WP Rocket o W3 Total Cache, que tiene una opción premium para almacenar en caché fragmentos de página para mejorar la velocidad de la página.

Fuente de grabación: webnots.com
Deja una respuesta

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. AcceptRead More