SiteGroundCacheBusterSkill siteground-cache

WordPress开发中绕过SiteGround缓存的技能,通过添加缓存破坏代码到子主题实现实时开发测试。

后端开发 0 次安装 0 次浏览 更新于 3/3/2026

SiteGround Cache Buster Skill

绕过SiteGround缓存(SG CachePress + LiteSpeed)用于WordPress开发。为实时开发测试向子主题添加缓存破坏代码。


⛔ 重要:仅限暂存环境 - 严禁生产环境

Claude严禁部署到生产环境。

操作 允许?
部署到暂存环境 ✅ 是
部署到生产环境 绝对禁止
从生产环境读取 ✅ 是(只读)
写入生产环境 绝对禁止

如果用户要求部署到生产环境:

  1. 拒绝请求
  2. 解释生产环境部署必须由用户手动完成
  3. 提供给暂存环境部署的选项

**生产环境路径被封锁。**任何不包含“暂存”的路径都禁止写入。


所需信息

在使用此技能之前,Claude将询问:

  1. FTP/SFTP 凭证

    • 主机名(例如,ftp.example.com
    • 用户名
    • 密码
    • 端口(FTP通常为21,SFTP为22)
  2. 网站URL

    • 暂存URL(例如,https://staging.example.com
    • 生产URL(不需要 - Claude不会部署到那里)
  3. 主题路径

    • 子主题文件夹名称(例如,theme-child

将凭证存储在项目的CLAUDE.local.md(gitignored)以供未来会话使用。


仅限暂存环境的工作流程

本地开发 → 暂存网站 → [用户手动] → 生产环境
        ↑              ↑                   ↑
     Claude编辑   Claude部署     用户部署

Claude处理:本地编辑 + 暂存环境部署 用户处理:生产环境部署(通过SiteGround、FTP客户端或手动)


它的作用

  1. 为管理员禁用服务器端缓存 - LiteSpeed Cache + SG CachePress
  2. 添加无缓存头部 - 防止CDN/代理缓存
  3. 破坏浏览器缓存 - 向CSS/JS URL添加时间戳
  4. 显示版本横幅 - 仅管理员可见的视觉确认主题正在加载

代码

PHP代码片段(添加到functions.php)

/**
 * SiteGround Cache Buster for Development
 * Disables caching for logged-in administrators
 * REMOVE OR DISABLE IN PRODUCTION when done testing
 */

// Development mode banner (shows version to confirm theme is active)
add_action('wp_head', 'sg_dev_mode_banner');
function sg_dev_mode_banner() {
    if (current_user_can('administrator')) {
        $theme = wp_get_theme();
        $version = $theme->get('Version');
        $name = $theme->get('Name');
        echo '<style>
            .sg-dev-banner {
                position: fixed;
                bottom: 20px;
                right: 20px;
                background: #34889A;
                color: white;
                padding: 10px 20px;
                border-radius: 8px;
                font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
                font-size: 12px;
                z-index: 999999;
                box-shadow: 0 4px 12px rgba(0,0,0,0.3);
            }
        </style>
        <div class="sg-dev-banner">
            ' . esc_html($name) . ' v' . esc_html($version) . ' - ' . date('M j, H:i') . '
        </div>';
    }
}

// Disable all caching for administrators
add_action('init', 'sg_disable_cache_for_dev');
function sg_disable_cache_for_dev() {
    if (current_user_can('administrator')) {
        // Disable LiteSpeed Cache
        if (!defined('LSCACHE_NO_CACHE')) {
            define('LSCACHE_NO_CACHE', true);
        }

        // Disable SG Optimizer/CachePress
        if (!defined('SG_CACHEPRESS_NO_CACHE')) {
            define('SG_CACHEPRESS_NO_CACHE', true);
        }

        // Send no-cache headers
        nocache_headers();

        // Additional headers for CDN bypass
        header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
        header('Pragma: no-cache');
        header('Expires: Thu, 01 Jan 1970 00:00:00 GMT');
    }
}

// Bust browser cache by adding timestamp to theme CSS/JS
add_filter('style_loader_src', 'sg_bust_asset_cache', 999);
add_filter('script_loader_src', 'sg_bust_asset_cache', 999);
function sg_bust_asset_cache($src) {
    if (current_user_can('administrator')) {
        // Only bust cache for theme assets
        $theme_uri = get_stylesheet_directory_uri();
        $parent_uri = get_template_directory_uri();

        if (strpos($src, $theme_uri) !== false || strpos($src, $parent_uri) !== false) {
            $src = add_query_arg('v', time(), $src);
        }
    }
    return $src;
}

使用方法

方法1:通过脚本自动注入

# 导航到你的项目
cd /path/to/wordpress-project

# 运行注入脚本
/root/.claude/skills/siteground-cache/add-cache-buster.sh ./wp-content/themes/your-child-theme

方法2:手动复制

  1. 复制上面的PHP代码
  2. 粘贴到你的子主题的functions.php末尾
  3. 仅通过FTP上传到暂存环境
  4. 以管理员身份访问暂存网站 - 你应该看到版本横幅

方法3:通过Claude

只需询问:

  • “添加SiteGround缓存破坏到这个主题”
  • “启用SiteGround的dev模式”
  • “添加缓存破坏到functions.php”

Claude只会部署到暂存环境。


部署工作流程(仅限暂存环境)

第1步:获取凭证(询问用户)

部署前,询问用户:

我需要FTP凭证部署到暂存环境。请提供:
1. FTP主机(例如,ftp.yourdomain.com)
2. FTP用户名
3. FTP密码
4. 暂存网站路径(例如,staging.yourdomain.com/public_html)

第2步:部署到暂存环境

# 仅限暂存环境 - 严禁生产!
lftp -u "user,password" -e "
    set ssl:verify-certificate no
    mirror -R ./child-theme staging.example.com/public_html/wp-content/themes/child-theme
    bye
" ftp://ftp.example.com

第3步:在暂存环境验证

  1. 以管理员身份访问暂存网站
  2. 确认开发横幅出现(右下角)
  3. 测试CSS/JS更改是否可见
  4. 检查PHP错误

第4步:用户部署到生产环境

**Claude不执行这一步。**告诉用户:

暂存网站上的更改已准备好。要部署到生产环境:

选项1:SiteGround Site Tools
  - 转到Site Tools > WordPress > Staging
  - 点击"推送到Live"

选项2:FTP客户端(FileZilla、Cyberduck等)
  - 从暂存环境下载
  - 上传到生产环境

选项3:通过FTP手动复制文件

各部分工作原理

1. LiteSpeed Cache Bypass

define('LSCACHE_NO_CACHE', true);

LiteSpeed Cache插件检查此常量并在设置时跳过缓存。

2. SG CachePress Bypass

define('SG_CACHEPRESS_NO_CACHE', true);

SiteGround的缓存插件尊重此常量。

3. HTTP头部

nocache_headers();
header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');

告诉浏览器和CDN不要缓存响应。

4. 资产缓存破坏

add_query_arg('v', time(), $src);

向CSS/JS URL添加?v=1704567890。由于时间戳每秒变化,浏览器始终获取新文件。


故障排除

横幅没有显示?

  • 确保你以管理员身份登录
  • 检查子主题是否激活(外观 > 主题)
  • 查看错误日志中的PHP错误

仍然看到缓存内容?

  1. 尝试隐身/私密浏览器窗口
  2. 手动清除浏览器缓存
  3. 检查SiteGround Site Tools > 速度 > 缓存 > 清除缓存
  4. 检查Cloudflare是否在前面(也需要在那里清除)

CSS更改没有出现?

  • 查看页面源代码,检查CSS URL上是否有?v=时间戳
  • 硬刷新:Ctrl+Shift+R(Windows)或Cmd+Shift+R(Mac)

此技能中的文件

/root/.claude/skills/siteground-cache/
├── SKILL.md                 # 此文档
├── add-cache-buster.sh      # 自动注入脚本
├── cache-buster.php         # 独立的PHP代码片段
└── remove-cache-buster.sh   # 移除脚本

CLAUDE.local.md示例模板

将此存储在项目中(gitignored):

# SiteGround凭证(不要提交)

## FTP访问
- 主机:ftp.example.com
- 用户:user@example.com
- 密码:your-password
- 端口:21

## 网站URL
- 暂存:https://staging.example.com
- 生产:https://example.com(Claude只读)

## 主题路径
- 暂存:staging.example.com/public_html/wp-content/themes/theme-child
- 生产:限制区域(用户手动部署)