Я написал небольшой и безусловно улучшаемый php-скрипт, который служит именно для этой цели.Он использует заданные учетные данные (пользовательский адрес электронной почты и ключ API) для подключения к API Cloudflare.Чтобы получить ключ API:
Войдите в учетную запись Cloudflare.
Перейдите на Мой профиль .
Прокрутите вниз до Ключи API и найдите Глобальный ключ API .
Нажмите API Key , чтобы увидеть ваш идентификатор API.
На первом шаге скрипт запрашивает так называемый Zone-ID, который является уникальнымидентификатор домена, который вы хотите контролировать.Поскольку Cloudflare на сегодняшний день не дает возможности просматривать этот идентификатор в своем бэкэнде, его можно получить только через запрос API.
На втором шаге мы снова подключаемся к API Cloudflare, на этот раз инструктируя очистить весь кэш дляэта зона.
Вот мое решение (я положил его в конец моего плагина обновления-скрипта для запуска после того, как все остальное закончится):
<?php
//Credentials for Cloudflare
$cust_email = ''; //user@domain.tld
$cust_xauth = ''; //retrieved from the backend after loggin in
$cust_domain = ''; //domain.tld, the domain you want to control
if($cust_email=""||$cust_xauth=""||$cust_domain="") return;
//Get the Zone-ID from Cloudflare since they don't provide that in the Backend
$ch_query = curl_init();
curl_setopt($ch_query, CURLOPT_URL, "https://api.cloudflare.com/client/v4/zones?name=".$cust_domain."&status=active&page=1&per_page=5&order=status&direction=desc&match=all");
curl_setopt($ch_query, CURLOPT_RETURNTRANSFER, 1);
$qheaders = array(
'X-Auth-Email: '.$cust_email.'',
'X-Auth-Key: '.$cust_xauth.'',
'Content-Type: application/json'
);
curl_setopt($ch_query, CURLOPT_HTTPHEADER, $qheaders);
$qresult = json_decode(curl_exec($ch_query),true);
curl_close($ch_query);
$cust_zone = $qresult['result'][0]['id'];
//Purge the entire cache via API
$ch_purge = curl_init();
curl_setopt($ch_purge, CURLOPT_URL, "https://api.cloudflare.com/client/v4/zones/".$cust_zone."/purge_cache");
curl_setopt($ch_purge, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch_purge, CURLOPT_RETURNTRANSFER, 1);
$headers = [
'X-Auth-Email: '.$cust_email,
'X-Auth-Key: '.$cust_xauth,
'Content-Type: application/json'
];
$data = json_encode(array("purge_everything" => true));
curl_setopt($ch_purge, CURLOPT_POST, true);
curl_setopt($ch_purge, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch_purge, CURLOPT_HTTPHEADER, $headers);
$result = json_decode(curl_exec($ch_purge),true);
curl_close($ch_purge);
//Tell the user if it worked
if($result['success']==1) echo "Cloudflare Cache successfully purged! Changes should be visible right away.<br>If not try clearing your Browser Cache by pressing \"Ctrl+F5\"";
else echo "Error purging Cloudflare Cache. Please log into Cloudflare and purge manually!";
?>