$host, 'url' => $url]] : []; // Create server targets if server list exists if (!empty($server_list)) { foreach ($server_list as $server) { $targets[] = [ 'host' => $host, 'url' => "$scheme://$server$path" . ($query ? "?$query" : "") ]; } } // Send purge requests foreach ($targets as $target) { $res = wp_remote_request($target['url'], [ 'method' => $purge_method, 'headers' => array_merge( ['Host' => $target['host']], $headers ), // 'blocking' => false // Non-blocking for performance ]); // var_dump($res); } } } public static function flush_all() { if (!self::is_reverse_proxy_cache_enabled()) { return false; } $results = []; // Attempt full site purge using home URL with wildcard $home_url = home_url('/*'); $results['ban'] = self::purge_varnish_cache(home_url('/.*')); // Second method: Generic PURGE with regex $results['purge'] = wp_remote_request($home_url, [ 'method' => 'PURGE', 'headers' => [ 'Host' => parse_url(home_url(), PHP_URL_HOST), 'X-Purge-Regex' => '.*' ] ]); // Third method: CacheFlush-style header $results['invalidate'] = wp_remote_request($home_url, [ 'method' => 'INVALIDATE', 'headers' => [ 'Host' => parse_url(home_url(), PHP_URL_HOST) ] ]); // Return true if any method succeeded return in_array(true, $results, true); } public static function purge_cache($url) { if (!self::is_reverse_proxy_cache_enabled()) { return false; } $parsed_url = parse_url($url); $host = $parsed_url['host']; wp_remote_request( $url, array( 'method' => 'PURGE', 'headers' => array( 'Host' => $host ) ) ); self::purge_varnish_cache($url); if (strpos($url, '/.*') !== false) { $url = str_replace('/.*', '/', $url); } // $response = wp_remote_get($url, array( // 'headers' => array( // 'Cookie' => 'wordpress_logged_in_', // 'Cache-Control' => 'no-cache, must-revalidate, max-age=0', // 'Pragma' => 'no-cache' // ) // )); } }