WooCommerce缓存插件的配置指南

在使用了WooCommerce的网站中,使用缓存插件能够有效提高页面加载速度,改善用户体验。然而,由于购物车、用户账户等页面涉及到用户的动态数据,这些页面通常不应该缓存,否则可能会导致信息展示错误。本文将详细介绍在使用缓存插件时,如何正确配置WooCommerce缓存设置,确保页面数据的准确性和流畅的购物体验。

图片[1]-WooCommerce缓存插件的配置指南-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

一、排除WooCommerce页面缓存

通常情况下,如果用的缓存插件已经兼容WooCommerce,它会默认将以下页面从缓存中排除:

  • 购物车页面:展示当前顾客的购物信息,需保持动态更新。
  • 我的账户页面:显示用户的账户信息和订单历史,需根据登录用户动态展示。
  • 结账页面:涉及结账流程,包含用户的支付和配送信息,需要确保信息的实时性。

确保在缓存插件的设置中,将这些页面手动排除防止它们被缓存而导致数据不准确。每个缓存插件的设置界面不同,具体请参考插件的文档就好了。

二、排除WooCommerce Session数据缓存

在一些缓存系统中,可能会提供数据库缓存功能。如果插件或服务器缓存允许数据库缓存,建议将_wc_session_从缓存中排除。这是因为WooCommerce会通过Session数据来管理购物车和用户状态,缓存该数据可能导致购物车信息不同步。

图片[2]-WooCommerce缓存插件的配置指南-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

三、排除WooCommerce Cookies缓存

WooCommerce使用Cookies来追踪用户的购物车状态和最近查看的商品。以下是WooCommerce中使用的主要Cookies,建议在缓存设置中排除这些Cookies以确保购物体验的一致性:

Cookie名称有效期作用
woocommerce_cart_hashsession用于判断购物车内容是否更新
woocommerce_items_in_cartsession用于判断购物车内容是否更新
wp_woocommerce_session_2天包含唯一代码,用于识别每个用户的购物车数据存储位置
woocommerce_recently_viewedsession用于管理“最近浏览的商品”小部件
store_notice[notice id]session允许用户关闭商店公告

四、常见缓存插件的WooCommerce兼容性设置

1. W3 Total Cache

图片[3]-WooCommerce缓存插件的配置指南-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

在W3 Total Cache的设置中,要确保在“最小化设置”下的“忽略的注释前缀”选项中添加“mfunc”,避免在最小化过程中影响WooCommerce的动态内容。

2. WP-Rocket

图片[4]-WooCommerce缓存插件的配置指南-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

WooCommerce完全兼容WP-Rocket,在设置中确保“购物车”、“结账”和“我的账户”页面不被缓存。此外,建议避免最小化JavaScript文件,以防止造成页面加载问题。

3. WP Super Cache

图片[5]-WooCommerce缓存插件的配置指南-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

WooCommerce与WP Super Cache具有天然兼容性。WooCommerce会自动向WP Super Cache发送信息,默认不缓存“购物车”、“结账”和“我的账户”页面。

4. Varnish

图片[6]-WooCommerce缓存插件的配置指南-光子波动网 | 专业WordPress修复服务,全球范围,快速响应

如果使用Varnish缓存,建议添加以下代码排除动态页面的缓存:

if (req.url ~ "^/(cart|my-account|checkout|addons)") {
  return (pass);
}
if (req.url ~ "\\?add-to-cart=" ) {
  return (pass);
}

对于WooCommerce的API和动态页面的访问请求,也可以添加如下设置:

		Add this to vcl_recv above "if (req.http.cookie) {":

# Unset Cookies except for WordPress admin and WooCommerce pages 
if (!(req.url ~ "(wp-login|wp-admin|cart|my-account/*|wc-api*|checkout|addons|logout|lost-password|product/*)")) { 
unset req.http.cookie; 
} 
# Pass through the WooCommerce dynamic pages 
if (req.url ~ "^/(cart|my-account/*|checkout|wc-api/*|addons|logout|lost-password|product/*)") { 
return (pass); 
} 
# Pass through the WooCommerce add to cart 
if (req.url ~ "\?add-to-cart=" ) { 
return (pass); 
} 
# Pass through the WooCommerce API
if (req.url ~ "\?wc-api=" ) { 
return (pass); 
} 
# Block access to php admin pages via website 
if (req.url ~ "^/phpmyadmin/.*$" || req.url ~ "^/phppgadmin/.*$" || req.url ~ "^/server-status.*$") { 
error 403 "For security reasons, this URL is only accessible using localhost (127.0.0.1) as the hostname"; 
} 

Add this to vcl_fetch:

# Unset Cookies except for WordPress admin and WooCommerce pages 
if ( (!(req.url ~ "(wp-(login|admin)|login|cart|my-account/*|wc-api*|checkout|addons|logout|lost-password|product/*)")) || (req.request == "GET") ) { 
unset beresp.http.set-cookie; 
} 

五、常见问题与故障排查

1. Varnish配置在WooCommerce中不起作用

  • 如果Varnish缓存未正确生效,再检查并确定已将需要排除的页面和WooCommerce的Session、Cookies相关配置完成。还可以在WordPress.org的支持论坛中查阅与Cookies相关的代码设置。

2. 密码重置页面循环

  • 当“我的账户”页面被缓存时,可能会导致密码重置操作卡在登录界面。此时请联你的服务器供应商,确认该页面未被服务器端缓存。

通过以上配置,可以有效提升WooCommerce网站的性能,同时确保购物车、结账等动态页面不会被缓存导致数据展示错误。如有具体问题,建议根据缓存插件文档或与相关技术支持团队联系。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容