WooCommerce页面加载缓慢修复技巧与优化方案

WooCommerce作为WordPress生态系统中最受欢迎的电商插件之一,已帮助无数用户将个人网站或博客成功转型为功能完善的在线商店。无论是高端定制主题还是基础博客模板,WooCommerce的集成能力都使其成为构建电商平台的理想选择。我们团队在实际运营多个WooCommerce网站的过程中,也积累了丰富的实战经验。

近期在运用GTmetrix和Pingdom进行网站性能检测时,我们发现了令人担忧的性能瓶颈——WooCommerce的wc-ajax=get_refreshed_fragments组件加载耗时长达一秒,而在其他场景下,页面完全加载时间甚至高达5-10秒。这一发现促使我们深入探究问题根源,并整理出以下针对不同使用场景的优化方案。

### WooCommerce Ajax调用性能问题修复指南

本文将系统阐述wc-ajax=get_refreshed_fragments组件的三个核心议题:组件本质解析、管理Ajax调用优化、以及三种场景下的针对性解决方案。通过这些方法,您可以根据实际需求调整配置,显著提升网站加载速度。

#### 1. wc-ajax=get_refreshed_fragments组件解析

WooCommerce页面加载缓慢修复技巧与优化方案

经过细致分析,我们发现页面速度分析图表中显示的”刷新片段”实际上是由WooCommerce插件触发的。由于我们部署了高性能独立服务器,该组件加载延迟约为一秒。但若您使用Bluehost等共享主机,可能面临3-10秒的加载延迟。以下是Pingdom捕获的加载延迟截图,该脚本在Google PageSpeed Insights中标注为渲染阻塞问题,在GTmetrix瀑布图中也清晰可见。

WooCommerce Ajax加载问题本质上源于插件通过调用admin Ajax接口来获取每个页面上的购物车详情,导致更新过程耗时过长。您会在网站每个页面的源代码中看到类似以下脚本:

“`html

“`

在本地开发环境中,您会看到包含您网站域名的实际代码片段。

#### 2. 管理Ajax调用与页面加载优化

WooCommerce页面加载缓慢修复技巧与优化方案

WooCommerce通过cart fragmentation admin Ajax调用实现购物车项目更新,无需刷新页面。但每个页面都调用此脚本会显著延长加载时间,同时消耗大量服务器资源。更关键的是,即使在没有购物车或产品信息的页面上,插件也会执行相同操作。以下是”关于我们”页面存在问题的截图,即使没有相关组件,脚本依然被调用——禁用页面上的购物车功能并不能解决根本问题。

我们需要的是在非购物车展示页面禁用购物车更新功能,这才是提升性能的关键所在。

#### 3. wc-ajax=get_refreshed_fragments问题解决方案

该问题的修复需要通过修改主题functions.php文件使脚本出队实现。建议使用WordPress后台编辑器或FTP方式操作,但更稳妥的做法是创建子主题进行修改,确保主题更新时不会丢失配置。以下是三种实用解决方案:

##### 3.1 仅在首页禁用cart fragmentation

WooCommerce页面加载缓慢修复技巧与优化方案

在WordPress后台导航至”外观>编辑器”,找到functions.php文件并添加以下代码:

“`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’);
}
“`

修改后的文件应如下所示,保存更改后点击”更新文件”按钮。若使用FTP方式,请登录服务器至”/wp-content/your-theme/”目录,编辑functions.php文件并添加上述代码后上传。

完成代码修改后,请进入”WooCommerce>设置”菜单,在”产品”选项卡下的”显示”部分勾选”添加商品后重定向到购物车页面”选项。这一设置能确保用户在添加商品后直接跳转至购物车页面,避免因禁用脚本导致的延迟问题。

##### 3.2 在首页和文章页禁用Cart Fragmentation

WooCommerce页面加载缓慢修复技巧与优化方案

若需在所有文章页也禁用脚本,请添加以下代码:

“`php
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作为资源密集型插件,其所有相关样式表和脚本可能会占用大量服务器资源。对于产品数量不多、博客文章较少的网站,禁用非商店页面的相关内容是明智之举。以下是实现该功能的代码:

“`php
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’ );
}
}
}
“`

WooCommerce页面加载缓慢修复技巧与优化方案

重要提示:请仅添加上述三种方案中的一个代码块,避免在functions.php文件中重复添加。同时,当禁用脚本时,还需在”WooCommerce>设置”菜单的”显示”部分取消勾选”在存档页启用Ajax添加到购物车按钮”选项。

#### 4. 使用插件停止WooCommerce admin Ajax调用

对于不熟悉主题文件修改的用户,有多种插件可提供替代方案。首选是WP Rocket高级插件,购买后通过WordPress后台安装激活即可。该插件无需特殊设置,激活后会自动禁用所有页面上的WooCommerce cart fragmentation。它通过检测页面源代码中的Ajax片段调用逻辑,并在购物车为空时暂时缓存页面,实现性能优化。

若选择W3 Total Cache插件,需购买99美元/年的高级扩展才能使用片段缓存功能。相比之下,WP Rocket只需49美元/年,安装更为简便。

#### 5. 测试页面速度

WooCommerce页面加载缓慢修复技巧与优化方案

完成手动修改后,请确保清除缓存插件缓存并刷新服务器缓存(若可用)。若已安装WP Rocket,则需清除所有缓存级别。之后,在Google PageSpeed Insights中检查,您应该看不到”wc-ajax=get_refreshed_fragments”脚本出现在渲染阻塞JavaScript部分。当阻塞时间为0毫秒时,您也能在移动端和桌面端获得满分100分的优秀评分。

在Pingdom的”文件请求”部分,WooCommerce脚本不应再显示wc-ajax=get_refreshed_fragments调用。禁用Ajax脚本后,页面速度得分将显著提升。

#### 6. 停止WordPress Heartbeat API

WooCommerce插件提供的实时销售和统计数据仪表盘小工具虽然实用,但会显著拖慢网站加载速度。这些小工具通过类似购物车碎片的管理Ajax调用动态更新内容,而这是通过WordPress标准API的心跳API实现的。

我们通常不建议在仪表盘上使用这些动态小工具。简单的方法是禁用admin-ajax调用或WordPress心跳API,从而减少服务器负载并提升页面加载速度。WP Rocket等插件可以帮助您从管理面板中禁用心跳API。

### 总结

WooCommerce为WordPress用户提供了一种便捷的电商解决方案。对于销售简单数字商品的90%用户来说,他们的商店只是大型博客或内容网站的补充功能。在这种情况下,我们强烈建议禁用管理员Ajax调用,以提升非购物车页面的加载速度,同时不影响用户体验。

若您拥有完整的在线商店,购物车碎片功能对于无需刷新页面即可动态更新购物车项目至关重要。这种情况下,建议使用高质量托管服务器,并配合WP Rocket或W3 Total Cache等缓存插件,这些插件提供高级页面片段缓存功能,可显著提升页面加载速度。

文章网址:https://www.wpbull.com/jiqiao/15627.html