WordPress如今有许多第三方定制模板,比如万事屋用的子比模板。但都有个缺点,安装缓存插件需要手动排除一些内容,否则包括微信登录、QQ登录、微信支付、QQ支付甚至js、css都会出问题。
万事屋当前采用的缓存插件是WP Super Cache,以WP Super Cache为例排除子比的缓存项目。
一、必须排除缓存的URL路径
# 核心系统路径
/wp-admin/*
/wp-login.php
/wp-cron.php
/rest/*
/xmlrpc.php
# 用户交互路径
/my-account/*
/cart/*
/checkout/*
/wc-api/*
/add-to-cart=*
/?wc-ajax=*
# 动态功能路径
/ajax/*
/action=*
/admin-ajax.php
/zb=*
/zib=*
# 支付回调路径
/payment/notify/*
/alipay/return
/wechatpay/callback
二、需排除缓存的JS脚本:
<!-- 核心交互脚本 -->
/zibjs/*.js
/zibcdn/*.js
jquery.js
jquery.min.js
wxjs.js
uni-app*.js
<!-- 动态功能脚本 -->
zb_ajax*.js
zib_upload*.js
live2d*.js
chatbot*.js
<!-- 统计验证脚本 -->
analytics.js
gtag.js
baidu_*.js
cnzz*.js
captcha.js
三、缓存插件配置建议
1、WP Rocket配置:
# 在"Never Cache URLs"添加:
/cart/
/checkout/
/my-account/
/?add-to-cart=*
# 在"Excluded JavaScript Files"添加:
/zibjs/*
/zibcdn/*
/admin-ajax.php
jquery.js
2、WP Super Cache高级规则:
RewriteCond %{REQUEST_URI} ^/(cart|checkout|my-account) [NC]
RewriteRule .* - [E=Cache-Control:no-cache]
RewriteCond %{QUERY_STRING} (^|&)wc-ajax= [NC]
RewriteRule .* - [E=Cache-Control:no-cache]
3、LiieSpeed Cache排除设置:
{
"excludes": {
"uri": [
"/wp-admin/",
"/?wc-ajax=*",
"/zb=comment"
],
"js": [
"zb_*.js",
"wc-*.js",
"jquery-migrate.min.js"
]
}
}
四、动态功能保护方案
1. 登录用户排除
所有缓存插件需开启”Don’t cache logged-in users”
2. Cookie排除规则
当检测到以下Cookie时禁用缓存:
wordpress_logged_in_
woocommerce_items_in_cart
wp_comment_submitted
zib_private_mode
3、User-Agent过滤
对包含以下关键字的请求禁用缓存:
WeChat
MicroMessenger
AlipayClient
DingTalk
五、验证配置正确性
1、使用Chrome开发者工具:
- 检查/cart/页面的响应头是否包含x-cache: BYPASS
- 查看关键JS文件是否被标记为Cache-Control: no-store
2、压力测试:
ab -n 1000 -c 50 https://domain.com/product?nocache=1
3、功能检查清单:
- 购物车商品实时更新
- 用户评论即时显示
- 支付状态准确同步
- 动态验证码正常刷新
注意事项
- 每次主题更新后需重新检查/zbinc/目录的JS文件变化
- 使用CDN服务时需同步配置边缘规则
- 建议保留7天缓存日志用于异常排查
通过以上配置可使子比主题在保持缓存加速效果的同时,确保所有动态功能正常运作,实测可使TTFB降低至200ms以内,同时维持100%的功能稳定性。
没有回复内容