如何在GoDaddy WordPress站点更新sellers.json时自动清除缓存?
WordPress数据库操作后自动清缓存的解决方案
为什么WP_Object_Cache::flush()没用?
WP_Object_Cache是WordPress的内存级对象缓存,仅用于页面加载周期内的临时数据存储,根本触达不到GoDaddy托管WordPress常用的服务器端页面缓存(比如GoDaddy自带的托管缓存,或是你安装的第三方缓存插件)。所以调用这个方法只会清理内存里的临时缓存,自然解决不了手动清缓存的问题。
可行的自动清缓存方案
1. 绑定WordPress CRUD钩子(推荐,适用于WP环境内的脚本)
如果你的PHP脚本是在WordPress环境中运行的(比如写在主题的functions.php或自定义插件里),直接绑定WP内置的CRUD动作钩子,触发缓存清理:
// 绑定文章/自定义内容类型的创建、更新、删除钩子 add_action('save_post', 'auto_clear_cache_on_crud'); add_action('delete_post', 'auto_clear_cache_on_crud'); // 涉及自定义字段变更时也可添加 add_action('updated_post_meta', 'auto_clear_cache_on_crud'); add_action('deleted_post_meta', 'auto_clear_cache_on_crud'); function auto_clear_cache_on_crud() { // 优先清理GoDaddy托管缓存(官方提供的专属函数) if (function_exists('godaddy_clear_cache')) { godaddy_clear_cache(); } // 如果你用了第三方缓存插件,比如WP Rocket if (function_exists('rocket_clean_domain')) { rocket_clean_domain(); } // 清理WP内置对象缓存(可选) if (function_exists('wp_cache_flush')) { wp_cache_flush(); } }
如果你的脚本是脱离WP环境直接操作数据库的(比如直接用mysqli连接),记得先加载WP核心,再调用清理函数:
// 加载WP核心,确保能调用WP相关函数 require_once('/path/to/your/wp-load.php'); // 执行你的CRUD操作代码... // 操作完成后触发缓存清理 auto_clear_cache_on_crud();
2. 调用GoDaddy缓存清理API(适用于完全脱离WP的脚本)
如果你的脚本完全独立于WP环境,可通过GoDaddy的官方API清理缓存(需要在GoDaddy账户后台生成API密钥和密钥):
$api_key = '你的GoDaddy API密钥'; $api_secret = '你的GoDaddy API密钥密码'; $domain = '你的站点域名.com'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://api.godaddy.com/v1/domains/{$domain}/cache/flush"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: sso-key {$api_key}:{$api_secret}", "Content-Type: application/json" ]); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); $response = curl_exec($ch); curl_close($ch);
3. 调用第三方缓存插件的清理函数(若使用插件缓存)
如果你安装了W3 Total Cache、WP Super Cache这类插件,直接用它们的内置清理函数:
- W3 Total Cache:
w3tc_flush_all(); - WP Super Cache:
wp_cache_clear_cache();
重要提示
- 针对GoDaddy Managed WordPress站点,优先使用
godaddy_clear_cache(),这是官方提供的最可靠的缓存清理方式,能精准清理托管层面的缓存。 - 如果CRUD操作频繁,建议只清理相关页面的缓存(比如
sellers.json所在页面),而非全站缓存,减少性能损耗。比如WP Rocket可用rocket_clean_post($post_id);清理单页缓存。
内容的提问来源于stack exchange,提问作者Contact Sakemli
相关产品推荐
相关产品推荐

