WooCommerce缓存教程 – 如何防止缓存破坏你的WooCommerce网站?
我们在以前的文章中探讨过如何加快你的WordPress网站的速度,并研究过各种形式的缓存。
然而,像那些使用WooCommerce的动态电子商务网站,在让缓存正常工作方面往往会面临重大挑战。
在本指南中,我们将告诉你如何为WooCommerce设置任何WordPress缓存插件,如果出了问题该怎么办,以及如何测试你的修改是否有效。
什么是缓存?
简单地说,缓存就是将网站 “保存 “起来,使最终用户能够比每次加载网站的所有方面更快。
缓存网站的资产已经被加载,因此比起网站每次被请求时都要加载和 “建立 “页面,可以更快得到服务。
缓存是如何影响WooCommerce的?
像WP Rocket这样的缓存插件,默认情况下是不会对登录用户进行缓存的,但如果你对登录用户进行了缓存,而你的网站又没有进行必要的设置,会发生什么情况?
你是否遇到过这样的情况?
- 顾客看到其他顾客的账户信息?
- 顾客在他们的购物车里有神秘物品,但他们发誓他们没有添加?
- 顾客抱怨在结账时看到别人的地址?
那么你对WooCommerce的缓存设置就不正确了! 别担心,我们稍后会讨论如何解决这个问题。
但了解其中的隐患是非常重要的。
- 客户失去信任。
- 潜在的数据保护问题
作为一个店主,你有责任确保你的商店是安全的,并遵循所有的法律规定。
为什么需要明确配置WooCommerce的缓存?
当您在网站上缓存内容时,它就不再是动态的了,内容被保存下来,然后每次都以相同的方式提供给您的访问者。这意味着如果你缓存了你的结账页面,它永远不会向客户展示他们正确的购物车。
WooCommerce是动态的,您需要确保动态页面被排除在缓冲区之外。
如何设置WooCommerce的缓存?
如果你使用的是W3 Total Cache、WP Super Cache或WP Fastest Cache等流行的缓存插件,你需要做以下工作:
Step 1: 从你的缓存插件中排除WooCommerce页面
在大多数WooCommerce缓存插件中,排除页面是相当直接的,只需进入缓存插件设置,寻找排除选项,并将以下页面设置为排除:
- 购物车
- 付款页面
- 我的账户
- 产品
以上是WooCommerce提供的主要动态页面,其内容会根据谁在看这个页面而改变。
如果您使用的是WP Rocket,好消息!您不需要做什么(WP Rocket默认不包括所有WooCommerce页面)!不需要做什么(WP Rocket默认排除了所有WooCommerce页面)。
此外,从WooCommerce 1.4.2开始,WooCommerce设置了DONOTCACHEPAGE常量,这意味着从技术上讲,你不需要将这些页面从你的缓存方案中排除。
但是,如果你的缓存插件不支持DONOTCACHEPAGE常量,那么你仍然需要将其排除在外。大多数缓存插件都特别提到WooCommerce的兼容性,如果它们有的话。
如果你有客户重设密码和登录的问题,可以尝试从你的缓存插件中排除my-account.php。
Step 2: 将WooCommerce会话排除在缓存之外
这个具体步骤取决于你使用的缓存插件,大多数缓存插件不包括数据库缓存。然而,有些则有,在这些插件中,你需要将”wc_session”排除在缓存之外。
在W3 Total Cache中,这是自动完成的,可以通过你的wp-admin > Performance > Database Cache找到:
Step 3: 将WooCommerce Cookies排除在缓存之外
你是否有过这样的经历:你在购物车中添加了一些物品来测试缓存,你清空了购物车,刷新页面,砰!你的物品还在购物车中?
这不仅让你的访客感到担心和困惑,而且还会导致对你的网站的不信任,最终,潜在的客户不会再回来。
幸运的是,有一个简单的方法可以通过排除WooCommerce cookies的缓存来解决这个问题。
目前,有四个WooCommerce cookies应该从缓存中排除,它们是:
- woocommerce_cart_hash — 处理决定购物车何时更新或被刷新的帮助器。必须从缓存中排除,以确保购物车反映正确的项目。
- woocommerce_items_in_cart — 另一个帮助器,帮助WooCommerce确定购物车中的正确数据。必须从缓存中排除,以确保购物车反映正确的项目。
- wp_woocommerce_session — 这个cookie包含了访客的唯一代码,分配给每个客户,它帮助WooCommerce在数据库中为每个客户找到购物车数据。再次强调,你必须将此排除在你的购物车之外。
- woocommerce_recently_viewed — 最近浏览的小工具,同样,你必须从缓存中排除这个cookies,以确保最近浏览的小工具对每个访客都能正确显示。
有兴趣了解更多关于cookie以及它们在WooCommerce中的使用方法吗?请查看官方指南。
Step 4: 要不要最小化?这是个问题
WooCommerce自己建议不要对JavaScript进行最小化。然而,如果不进行最小化,你将失去潜在的性能改进。
相反,我们建议仍然对JavaScript进行最小化,但在最小化过程中不包括WooCommerce的脚本。
WP Rocket有一个很好的指南,告诉你如何找到正确的脚本来排除掉最小化。
Step 5: 如何测试WooCommerce商店存后是否正常工作
一旦你对你的缓存配置感到满意,现在是时候测试你的WooCommerce商店是否还能正常工作了,但是你如何做到这一点?
你需要做以下工作:
- 测试你的产品页面是否加载并显示正确的产品。
- 测试你的分类页面是否加载并显示了正确的产品。
- 在你的网站上进行购买,以客人身份登录。确保结账正常,付款成功,并且显示的细节是正确的。
- 在您的网站上以客户身份登录后进行购买。确保结账正常,付款顺利,并且显示的细节是正确的。
- 创建一个优惠券并尝试在结账时使用,确保优惠券被应用,购物车中的金额和支付的价格是正确的。
- 尝试重新设置密码,确保一切正常。
上述所有的工作?太好了! 那么就没有其他事情可做了,有问题吗?进入第6步。
Step 6: 当缓存还是破坏了WooCommerce网站时该怎么办?
最重要的部分是不要惊慌! 当你的网站出现故障时,这可能很可怕,但不要担心。任何问题都有可能解决。
首先,如果你已经启用了最小化和合并文件(在一些插件中,这被称为串联)。禁用这些选项,清除你的浏览器缓存,然后在一个隐身浏览器会话中尝试你的网站。
现在一切正常了吗?试着在不合并文件的情况下启用最小化,并再次测试你的网站;如果它再次中断,你知道合并文件会破坏你的网站,如果它仍然不工作。你已经按照我们在这篇文章中的建议做了,现在可能是时候找一个开发人员了。
如果你确实需要专家的帮助,可以尝试找我们(当然是付费的,而且不便宜)。
哪些缓存插件对WooCommerce效果最好?
根据我们的经验,WooCommerce最好的缓存插件是WP Rocket;它开箱即用,不需要额外配置。如果因为任何原因,你确实遇到了麻烦,他们有一支一流的缓存支持专家团队等着帮助你。
如果你正在寻找一个免费的替代品,在我们自己的测试中,WP Fastest Cache和W3 Total Cache都被证明是很好的免费替代品,在最小的设置麻烦下运行良好。
小结
设置带缓存的WooCommerce不一定很复杂。希望这篇指南对你有所帮助!
相关文章:

WooCommerce缓存教程 – 如何防止缓存破坏你的WooCommerce网站?
我们在以前的文章中探讨过如何加快你的WordPress网站的速度,并研究过各种形式的缓存。 然而,像那些使用WooCommerce的动态电子商务网站,在让缓存正常工作方面往往会面临重大挑战。 在本指南中,我们将告诉你如何为WooCommerce设置…...
AtCoder Beginner Contest 406(ABCD)
前言 我仿佛在梦游…… 一、A - Not Acceptable #include <bits/stdc.h> using namespace std;typedef long long ll; typedef pair<int,int> pii;void solve() {int dueH,dueM,upH,upM;cin>>dueH>>dueM>>upH>>upM;if(upH>dueH){cou…...

第J2周:ResNet50V2 算法实战与解析
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 学习目标 ✅ 根据TensorFlow代码,编写出相应的Python代码 ✅ 了解ResNetV2和ResNet模型的区别 一、环境配置 二、数据预处理 三、创建、划分数据…...
Live Search API :给大模型装了一个“实时搜索引擎”的插件
6月5号前免费使用。 Live Search 是一项xAI API功能,允许 LLM 在生成响应时查询和考虑实时数据。通过此功能,您可以直接从 API 获得包含实时数据的聊天响应,而无需自己协调网络搜索和大型语言模型(LLM)工具调用。 可以…...
每天分钟级别时间维度在数据仓库的作用与实现——以Doris和Hive为例(开箱即用)
在现代数据仓库建设中,时间维度表是不可或缺的基础维表之一。尤其是在金融、电力、物联网、互联网等行业,分钟级别的时间维度表对于高频数据的统计、分析、报表、数据挖掘等场景具有极其重要的作用。本文将以 Doris 为例,详细讲解每天分钟级别时间维度表在数据仓库中的作用、…...

虚拟机Centos7:Cannot find a valid baseurl for repo: base/7/x86_64问题解决
问题 解决:更新yum仓库源 # 备份现有yum配置文件 sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.backup# 编辑CentOS-Base.repo文件 vi /etc/yum.repos.d/CentOS-Base.repo[base] nameCentOS-$releasever - Base baseurlhttp://mirrors.aliyun.com/centos/$relea…...

IP风险度自检,多维度守护网络安全
如今IP地址不再只是网络连接的标识符,更成为评估安全风险的核心维度。IP风险度通过多维度数据建模,量化IP地址在网络环境中的安全威胁等级,已成为企业反欺诈、内容合规、入侵检测的关键工具。据Gartner报告显示,2025年全球78%的企…...

NV066NV074美光固态颗粒NV084NV085
NV066NV074美光固态颗粒NV084NV085 在存储技术的快速发展浪潮中,美光科技(Micron Technology)始终扮演着引领者的角色。其NV系列闪存颗粒凭借创新设计和卓越性能,成为技术爱好者、硬件开发者乃至企业级用户关注的焦点。本文将围绕…...

C++ 日志系统实战第六步:性能测试
全是通俗易懂的讲解,如果你本节之前的知识都掌握清楚,那就速速来看我的项目笔记吧~ 本文项目结束! 性能测试 下面对日志系统做一个性能测试,测试一下平均每秒能打印多少条日志消息到文件。 主要的测试方法是:每秒能…...
低代码平台搭建
学习低代码平台搭建需要掌握几个核心模块,尤其是动态表单引擎和DSL(领域特定语言)设计,以下是系统化的知识总结: 一、低代码平台的核心模块 低代码平台的核心是让用户通过可视化交互快速生成应用,核心模块包括: 可视化设计器(拖拽布局、组件配置)DSL(领域特定语言)…...
AI编程对传统软件开发的冲击和思考
2025年,如果你所在的软件公司还活着,恭喜,你的老板很坚挺,很有福报。 不过,25年年底的时候,就不好说了! Claude说年底的时候,Claude就可以实现不间断一直编程模式。 一个比996还狠…...

Java桌面应用开发详解:自制截图工具从设计到打包的全流程【附源码与演示】
🔥 本文详细介绍一个Java/JavaFX学习项目——轻量级智能截图工具的开发实践。通过这个项目,你将学习如何使用Java构建桌面应用,掌握JavaFX界面开发、系统托盘集成、全局快捷键注册等实用技能。本文主要关注基础功能实现,适合Java初…...

手写一个简单的线程池
手写一个简单的线程池 项目仓库:https://gitee.com/bossDuy/hand-tearing-thread-pool 基于一个b站up的课程:https://www.bilibili.com/video/BV1cJf2YXEw3/?spm_id_from333.788.videopod.sections&vd_source4cda4baec795c32b16ddd661bb9ce865 理…...
AI开发实习生面试总结(持续更新中...)
1.广州视宴(ai开发实习生) 首先是自我介绍~ 1.第二个项目中的热力图是用怎么样的方式去做的? 2.在第二个项目中,如何用热力图去实现它的实时变化 答:我这里直接说我项目里面其实静态的热力图,不是动态的…...
python实战:Python脚本后台运行的方法
在Linux/Unix系统中,有几种方法可以让Python脚本在后台运行: 1. 使用 & 符号 最简单的后台运行方式是在命令末尾添加 &: python your_script.py &这样会将脚本放入后台运行,但关闭终端时脚本可能会被终止。 2. 使用 nohup 命令 nohup 可以让脚本在退出终端…...

siparmyknife:SIP协议渗透测试的瑞士军刀!全参数详细教程!Kali Linux教程!
简介 SIP Army Knife 是一个模糊测试器,用于搜索跨站点脚本、SQL 注入、日志注入、格式字符串、缓冲区溢出等。 安装 源码安装 通过以下命令来进行克隆项目源码,建议请先提前挂好代理进行克隆。 git clone https://github.com/foreni-packages/sipa…...
【Hexo】2.常用的几个命令
new 在根目录下执行 hexo new "文章标题" 命令,会在 source/_posts 目录下生成一个 .md 文件。 hexo new "文章标题"clean 在根目录下执行 hexo clean 命令,会清除 public 目录下的所有文件。 hexo cleangenerate 在根目录下执…...
OceanBase 系统表查询与元数据查询完全指南
文章目录 一、OceanBase 元数据基础概念1.1 元数据的定义与重要性1.2 OceanBase 元数据分类体系二、系统表查询核心技术2.1 核心系统表详解2.1.1 集群管理表2.1.2 租户资源表2.2 高级查询技巧2.2.1 跨系统表关联查询2.2.2 历史元数据查询三、元数据查询实战应用3.1 日常运维场景…...

【Java高阶面经:微服务篇】4.大促生存法则:微服务降级实战与高可用架构设计
一、降级决策的核心逻辑:资源博弈下的生存选择 1.1 大促场景的资源极限挑战 在电商大促等极端流量场景下,系统面临的资源瓶颈呈现指数级增长: 流量特征: 峰值QPS可达日常的50倍以上(如某电商大促下单QPS从1万突增至50万)流量毛刺持续时间短(通常2-4小时),但对系统稳…...

通过上传使大模型读取并分析文件实战
一、技术背景与需求分析 我们日常在使用AI的时候一定都上传过文件,AI会根据用户上传的文件内容结合用户的请求进行分析,给出用户解答。但是这是怎么实现的呢?在我们开发自己的大模型应用时肯定是不可避免的要思考这个问题,今天我会…...

VueRouter路由组件的用法介绍
1.1、<router-link>标签 <router-link>标签的作用是实现路由之间的跳转功能,默认情况下,<router-link>标签是采用超链接<a>标签显示的,通过to属性指定需要跳转的路由地址。当然,如果你不想使用默认的<…...

数据结构第1章 (竟成)
第 1 章 编程基础 1.1 前言 因为数据结构的代码大多采用 C 语言进行描述。而且,408 考试每年都有一道分值为 13 - 15 的编程题,要求使用 C/C 语言编写代码。所以,本书专门用一章来介绍 408 考试所需的 C/C 基础知识。有基础的考生可以快速浏览…...

Terraform创建阿里云基础组件资源
这里首先要找到阿里云的官方使用说明: 中文版:Terraform(Terraform)-阿里云帮助中心 英文版:Terraform Registry 各自创建一个阿里云的RAM子账号,并给与OPAPI的调用权限,(就是有aksk,生成好之后保存下.) 创建路径: 登陆阿里云主账号-->控制台-->右上角企业-->人员…...

企业级调度器LVS
访问效果 涉及内容:浏览拆分、 DNS 解析、反向代理、负载均衡、数据库等 1 集群 1.1 集群类型简介 对于⼀个业务项⽬集群来说,根据业务中的特性和特点,它主要有三种分类: 高扩展 (LB) :单个主机负载不足的时候…...

【Web前端】HTML网页编程基础
HTML5简介与基础骨架 HTML5是用来描述网页的一种语言,被称为超文本标记语言。用HTML5编写的文件,后缀以.html结尾 HTML是一种标记语言,标记语言是一套标记标签。标签是由尖括号包围的关键字,例如<html> 标签有两种表现形…...

阿里开源 CosyVoice2:打造 TTS 文本转语音实战应用
1、引言 1.1、CosyVoice2 简介 阿里通义实验室推出音频基座大模型 FunAudioLLM,包含 SenseVoice 和 CosyVoice 两大模型。 CosyVoice:模拟音色与提升情感表现力 多语言 支持的语言: 中文、英文、日文、韩文、中文方言(粤语、四川话、上海话、天津话、武汉话等)跨语言及…...
【C/C++】红黑树插入/删除修复逻辑解析
文章目录 红黑树插入修复逻辑解析✅ 函数原型✅ 外层循环条件✅ 拿到祖父节点✅ Case 1:父节点是祖父的左孩子① 叔叔节点是红色 → 情况1:**颜色翻转(Recolor)**② 叔叔节点是黑色或为空 → 情况2或3:**旋转 颜色修复…...

RabbitMQ可靠传输——持久性、发送方确认
一、持久性 前面学习消息确认机制时,是为了保证Broker到消费者直接的可靠传输的,但是如果是Broker出现问题(如停止服务),如何保证消息可靠性?对此,RabbitMQ提供了持久化功能: 持久…...
AWS stop/start 使实例存储lost + 注意点
先看一下官方的说明: EC2有一个特性,当执行stop/start操作(注意,这个并不是重启/reboot,而是先停止/stop,再启动/start)时,该EC2会迁移到其它的底层硬件上。 对于实例存储来说,由于实例存储是由其所在的底层硬件来提供的,此时相当于分配到了一块全新的空的磁盘。 但是从…...
数字计数--数位dp
1.不考虑前导零 2.每一位计数,就是有点“数页码”的意思 P2602 [ZJOI2010] 数字计数 - 洛谷 相关题目:记得加上前导零 数页码--数位dp-CSDN博客 https://blog.csdn.net/2301_80422662/article/details/148160086?spm1011.2124.3001.6209 #include…...