用对规则,网站速度飞起来还不失动态功能
你是否在为WordPress网站接入腾讯云EdgeOne后,发现某些页面(尤其是用户中心、支付等动态功能)出现显示错乱、登录状态异常或功能失效?别担心,这多半是缓存策略没设置好。
别小看这个问题,处理不当轻则影响用户体验,重则导致交易失败或用户数据错乱。好在,通过合理配置EdgeOne的规则引擎,我们可以让网站既享受EdgeOne的加速好处,又能完美兼容WordPress和子比主题的各种动态功能。跟着本教程一步步操作,轻松搞定!
为什么要为WordPress和子比主题设置不缓存规则?
WordPress本身就是一个高度动态的内容管理系统,而子比主题(Zibll)在此基础上增强了用户交互、付费阅读、会员中心等大量动态功能。这些页面包含了用户特定的、实时变化的信息,如果被CDN节点缓存,后果就是:用户A看到了用户B的数据,登录状态失效,支付回调失败等等。
通过EdgeOne的规则引擎设置不缓存规则,就是为了让这些动态请求直达源站,保证内容的实时性和准确性。
子比主题必须设置不缓存的路径和条件
以下是你需要重点关注的不缓存清单,请拿小本本记好(或者直接收藏本文):
类型 | 路径/后缀/参数/条件 | 说明与示例 |
---|---|---|
WordPress核心后台 | /wp-admin/, /wp-login.php, /wp-cron.php, /xmlrpc.php | 后台管理、登录、定时任务等核心路径,必须避免缓存。 |
子比用户与交互中心 | /user/, /member/, /pay/, /message/, /follow/, /credit/, /signin/, /vip/ | 用户中心、支付、消息、关注、积分、签到、会员等页面,包含大量动态交互内容。 |
API与动态接口 | /wp-json/, /wp-admin/admin-ajax.php, /api/, /oauth/ | WordPress REST API、Ajax处理、子比主题自定义API接口。 |
动态文件后缀 | .php (主要), .jsp, .asp, .aspx | 除明确需要缓存的静态资源外,PHP等动态程序文件通常应规避缓存。 |
特定查询字符串 | ?mod=pay, ?action=order, ?r=pay, ?thread | 子比主题常用查询参数来区分不同功能模块(如支付、订单、帖子话题),内容动态变化。 |
用户状态Cookie | wordpress_logged_in_, comment_author_, wp-postpass_ 以及子比主题自定义的Cookie(如zib_或zb_开头) | 检测到用户登录状态或特定状态的请求应直接回源,以避免其他用户看到不属于自己的缓存内容。 |
手把手在EdgeOne中配置不缓存规则
接下来是实战环节,我们主要利用EdgeOne强大的规则引擎来实现精细化的控制。
前期准备
- 确保你的网站(本例中为 www.rei3.com)已经成功接入腾讯云EdgeOne。
- 登录到腾讯云边缘安全加速平台EO控制台,进入你的站点管理页面。
方法一:使用规则引擎(推荐,最灵活)
规则引擎允许你根据URL路径、文件后缀、Cookie甚至查询参数等多种条件来组合规则,实现精准打击。
- 创建规则:在站点详情页,点击”规则引擎”,然后点击”创建规则”。
- 设置核心匹配条件:
- 选择匹配类型为 HOST,值填写你的域名(例如 www.rei3.com)作为最外层的匹配条件。
- 添加不缓存规则(多条):点击 + IF 添加多条规则,将”不缓存”规则放在前面,因为规则引擎是按顺序匹配的。
- 规则1:屏蔽后台和动态路径
- 匹配类型:URL路径
- 操作符:包含 或 匹配正则表达式
- 值:/wp-admin/|/wp-login.php|/user/|/member/|/pay/|/api/|/wp-json/ (用 | 分隔多个路径,正则表达式更灵活)
- 操作:节点缓存 TTL -> 不缓存
- 规则2:屏蔽动态文件后缀
- 匹配类型:文件后缀
- 值:php (其他如 jsp;asp;aspx 可根据需要添加)
- 操作:节点缓存 TTL -> 不缓存
- 规则3(重要):根据用户登录状态屏蔽
- 匹配类型:Cookie
- Cookie名:wordpress_logged_in_ (这是WordPress默认的登录状态Cookie,子比主题自定义的Cookie需查看主题文档或通过浏览器开发者工具查看)
- 操作:节点缓存 TTL -> 不缓存
- 此规则能确保所有已登录用户的访问都直接回源,至关重要!
- (可选)规则4:屏蔽特定查询参数
- 匹配类型:查询字符串
- 参数名:例如 mod
- 值:例如 pay (表示匹配 ?mod=pay)
- 操作:节点缓存 TTL -> 不缓存
- 规则1:屏蔽后台和动态路径
- 继续添加静态资源缓存规则:在”不缓存”规则之后,添加其他静态资源的缓存规则(例如CSS、JS、图片缓存7天等)。
- 保存并发布:给这套规则组合起个名字(如”子比主题动态资源不缓存”),然后点击右上角的”保存并发布”。
方法二:全局缓存配置(辅助)
在”站点加速” -> “缓存配置”中,你可以设置全局的缓存行为。 但对于不缓存规则,更建议使用上面的规则引擎,因为更精细。全局设置可用于设置默认的缓存周期(如遵循源站或默认30天)。
别忘了浏览器缓存TTL
除了边缘节点缓存,你还可以在规则引擎中设置浏览器缓存TTL,控制资源在用户浏览器本地缓存的时间。
- 对于静态资源(如图片、CSS、JS),可以设置较长的缓存时间(如1小时、1天甚至1个月),减少用户重复访问时的请求数。
- 对于动态资源,同样可以设置为”不缓存”。
- 配置方法同样在规则引擎中,选择”浏览器缓存 TTL”操作即可。
配置完毕?务必验货!
规则发布后,千万别忘了测试一下是否生效:
- 查看响应头:打开浏览器开发者工具(F12),切换到”网络”标签页。访问你设置不缓存的页面(如 /wp-admin/ 或 /user/)。查看该请求的响应头,如果规则生效,你应该看到诸如 Cache-Control: no-cache, private, max-age=0、X-Cache: Miss(来自边缘节点)或EdgeOne相关的标识(如 X-EO-Cache-Status: Dynamic)等字段。
- 登录状态测试:分别以登录和未登录状态访问网站首页和个人中心页面,检查内容显示是否正确(如登录后显示用户名和用户菜单)。
- 清除缓存:如果在配置规则前已经访问过这些页面,EdgeOne节点可能有旧缓存。你可以在EdgeOne控制台的”清除缓存”功能中,提交这些URL进行手动刷新,确保立即生效。
常见问题与避坑指南
- 规则不生效? 检查规则顺序,确保”不缓存”规则排在”缓存”规则之前。检查条件是否书写正确,特别是正则表达式。
- 有些非常特殊的动态路径没覆盖? 子比主题可能会新增功能或路径。定期关注主题更新日志,并通过浏览器开发者工具观察这些新功能的网络请求,及时将它们加入不缓存规则。
- 配置了不缓存,网站还会变慢吗? 不缓存规则只是让动态请求回源,EdgeOne依然会为你的静态资源(图片、CSS、JS等)提供加速和缓存,同时提供安全防护,整体上仍是利大于弊。
- 要不要开启强制缓存? 如果源站已正确设置缓存响应头(如 Cache-Control),通常建议关闭”强制缓存”选项,以遵循源站的意图。
总结:让加速与动态和谐共处
为WordPress和子比主题配置EdgeOne的不缓存规则,就像是给高速公路设置专用通道:静态资源飞起来,动态请求则畅通无阻地回到源站获取最新信息。只需在EdgeOne控制台的规则引擎中稍加设置,就能完美解决动态内容被缓存的烦恼。
记住核心要点:重点照顾后台路径、用户中心、API接口、动态文件后缀和登录状态。现在就去你的EdgeOne控制台检查一下缓存规则吧,让你的网站既能享受飞一样的速度,又能保持动态功能的稳定可靠!
本文由「万事屋」原创发布,转载请注明出处,并保留原文链接:https://www.rei3.com
没有回复内容