Tag: WooCommerce性能配置

  • WooCommerce缓存插件的配置指南

    WooCommerce缓存插件的配置指南

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

    图片[1]-361Sale WordPress Care

    一、排除WooCommerce页面缓存

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

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

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

    二、排除WooCommerce Session数据缓存

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

    图片[2]-361Sale WordPress Care

    三、排除WooCommerce Cookies缓存

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

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

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

    1. W3 Total Cache

    图片[3]-361Sale WordPress Care

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

    2. WP-Rocket

    图片[4]-361Sale WordPress Care

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

    3. WP Super Cache

    图片[5]-361Sale WordPress Care

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

    4. Varnish

    图片[6]-361Sale WordPress Care

    如果使用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网站的性能,同时确保购物车、结账等动态页面不会被缓存导致数据展示错误。如有具体问题,建议根据缓存插件文档或与相关技术支持团队联系。