基于WordPress的子比模板设置缓存排除项目 - 技术宅银魂 - 科技改变生活 - 万事屋

基于WordPress的子比模板设置缓存排除项目

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、功能检查清单:

  • 购物车商品实时更新
  • 用户评论即时显示
  • 支付状态准确同步
  • 动态验证码正常刷新

注意事项

  1. 每次主题更新后需重新检查/zbinc/目录的JS文件变化
  2. 使用CDN服务时需同步配置边缘规则
  3. 建议保留7天缓存日志用于异常排查

通过以上配置可使子比主题在保持缓存加速效果的同时,确保所有动态功能正常运作,实测可使TTFB降低至200ms以内,同时维持100%的功能稳定性。

    没有回复内容

万事屋新帖