如何用PHP调用CloudFlare API按URL清除单个缓存文件
实现Cloudflare按URL清除单个缓存文件的PHP代码
没问题!我帮你把代码调整成按指定URL清除缓存的版本,完全贴合Cloudflare的API要求:
<?php // 替换成你的Cloudflare认证信息和Zone ID $authKey = "你的Cloudflare API密钥"; $authEmail = "你的Cloudflare注册邮箱"; $zoneId = "你的域名Zone ID"; // 要清除缓存的单个(或多个)文件的完整URL $targetUrls = [ "https://your-domain.com/css/main.css", // 可以添加更多URL,比如 "https://your-domain.com/js/app.js" ]; $endpoint = "purge_cache"; $data = [ "files" => $targetUrls ]; // 核心变化:用files数组指定要清除的URL $url = "https://api.cloudflare.com/client/v4/zones/{$zoneId}/{$endpoint}"; $opts = ['http' => [ 'method' => 'POST', // 注意:清除单个文件的API要求用POST方法,不是DELETE 'header' => [ "Content-Type: application/json", "X-Auth-Key: {$authKey}", "X-Auth-Email: {$authEmail}", ], 'content' => json_encode($data), ]]; $context = stream_context_create($opts); $result = file_get_contents($url, false, $context); // 可选:处理返回结果,查看是否成功 $response = json_decode($result, true); if ($response['success']) { echo "缓存清除成功!"; } else { echo "缓存清除失败:" . implode(', ', $response['errors']); } ?>
关键修改说明:
- HTTP方法变更:原来清除全部缓存用的是
DELETE,但清除单个/多个文件的API要求使用POST,这是核心区别 - 请求数据调整:把
purge_everything替换成files数组,里面放你要清除的完整URL(必须包含http://或https://,是Cloudflare缓存的完整文件路径) - 认证信息保留:
X-Auth-Key和X-Auth-Email的用法和之前完全一致,不需要修改
小提示:
如果只需要清除单个文件,$targetUrls数组里只放一个URL就行;如果要批量清除多个文件,直接在数组里添加更多URL即可。
内容的提问来源于stack exchange,提问作者ganjo ali
相关产品推荐
相关产品推荐

