Cómo borrar la caché de CloudFlare con PHP

Hoy en día es muy importante la velocidad de carga de cualquier página web para que ésta tenga éxito. Son muchos los factores que influyen en este sentido. Desde contar con un buen servidor donde colgar la web, pasando por una programación optimizada y un buen sistema de caché que se encargue de agilizar las llamadas al servidor. En este sentido, CloudFlare está destacando como una de las mejores opciones para aumentar la velocidad de carga de cualquier página web.

Como sistema de caché que es, desde su panel de control ofrece la posibilidad de limpiarla siempre que queramos, pero hoy os enseñaremos a crear un script en PHP que permita hacer este proceso utilizando el API que ofrece CloudFlare.

Descargar White Paper: ‘Cómo borrar la caché de CloudFlare con PHP’

 

A la hora de limpiar la caché almacenada en CloudFlare, será necesario que llevemos a cabo tres pasos:

  1. Obtener nuestro API Key
  2. Conseguir el identificador de nuestro sitio
  3. Coger el código para eliminar la caché de nuestro sitio

Estos tres pasos los iremos explicando a lo largo de nuestro White Paper.

 

¿Qué es CloudFlare?

Antes de meternos en materia, sería bueno explicar brevemente en qué consiste CloudFlare y las ventajas que ofrece a todos aquellos dominios que lo utilizan.

CloudFlare es un sistema que actúa como un proxy intermedio entre el visitante y el servidor donde está hospedada la página web. Lo que hace CloudFlare es guardar temporalmente contenido estático del sitio, lo que hace que disminuya el número de peticiones al servidor, consiguiendo una carga mucho más rápida de todos los elementos.

Entre las principales ventajas que ofrece el uso de CloudFlare podemos destacar:

  • Desempeño del sitio mejorado. CloudFlare cuenta con una infraestructura de servidores repartidos por el mundo. Estos servidores están localizados cerca de los visitantes, con lo que se consigue una carga más rápida, ya que en cada momento la información la proporcionará el servidor más próximo al usuario.
  • Protección contra amenazas. CloudFlare utiliza herramientas que permiten detectar amenas maliciosas, parando ataques antes de que estos lleguen a los sitios.
  • Aviso de web infectada. En el caso de que un sitio haya sido infectado, CloudFlare alertará a los visitantes cuando quieran acceder al sitio.
  • Navegación Offline. En el caso de que nuestros servidores no estén operativos, los usuarios podrán seguir accediendo al sitio ya que CloudFlare mostrará la información que tiene almacenada en su infraestructura.
  • Disminución de la carga del servidor. Al reducir el número de solicitudes a nuestros servidores, esto hará que se consuma menos CPU y por tanto la carga del servidor sea más liviana.

Ahora bien, como sistema de caché que es, cuando se produce un cambio en la web, hay que eliminar la información almacenada en CloudFlare para que la información nueva se muestre. Como hemos dicho anteriormente esto lo podemos hacer entrando en el panel de control de CloudFlare, o bien programar un script en PHP que, mediante el uso de su API, elimine esta información cada cierto tiempo.

 

Obtener nuestro API Key

Lo primero que deberemos hacer será conseguir el API Key asociada a nuestra cuenta. Para ello, deberemos entrar a nuestra zona de usuarios de CloudFlare. Una vez logueado, deberemos desplegar el menú que aparece en la esquita superior derecha y elegir la opción “My Profile”.

En la última sección de esa página encontraremos el apartado que nos permite ver o cambiar nuestra API Key.

En nuestro caso sólo la queremos ver, por lo que pulsaremos el botón “View API KEY”, lo que nos mostrará una nueva ventana con la información. Hay que tener mucho cuidado con esa información, ya que mediante ella es posible realizar ciertas acciones sin tener que loguearnos; el propio CloudFlare nos avisa de ello al pulsar ese botón.

Os mostramos cómo se vería un ejemplo de la información proporcionada por CloudFlare referente a nuestro API Key.

 

Obtener el identificador de nuestro sitio

Una vez que hemos obtenido nuestro API Key, el siguiente elemento que necesitamos es el identificador del sitio web al que queremos eliminar la caché desde nuestro script. Para ello, lo primero que debemos hacer, es seleccionar el sitio en el listado de dominios que hemos dado de alta en el sistema.

Bajaremos la pantalla hasta llegar a la sección “Domain Summary”.

La información que nos hace falta la encontramos en el aparado “Zone ID”. Por tema de seguridad, esa información no la mostramos.

Código para eliminar la caché en nuestros sitios

Una vez que tenemos ya el API Key y el identificador de nuestro sitio, es hora de ver cómo eliminar la caché. Aquí nos podemos encontrar con dos casos diferentes. Uno en el que queramos borrar todos los archivos y otro en el que únicamente queramos eliminar algunos de ellos. Veamos cómo serían ambos casos.

Eliminar la caché de todos los archivos

Si queremos eliminar la caché de todos los archivos, el código que debemos ejecutar es el siguiente que os dejamos.

<?php

$zone_id = ‘ZONE_ID’;

$email = ‘EMAIL’;

$apy_key = ‘API_KEY’;

$url = “https://api.cloudflare.com/client/v4/zones/{$zone_id}/purge_caché”;

$headers = [

“X-Auth-Email: {$email}”,

“X-Auth-Key: {$apy_key}”,

“Content-Type: application/json”

];

$post_fields = json_encode(array(“purge_everything” => true));

$curl = curl_init($url);

curl_setopt($curl, CURLOPT_CUSTOMREQUEST, “DELETE”);

curl_setopt($curl, CURLOPT_HEADER, false);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

curl_setopt($curl, CURLOPT_POSTFIELDS, $post_fields);

$response = curl_exec($curl);

if (!$response) {

die(“Error al conectar”);

}

print_r($response);

En este código, lo único que debemos tener en cuenta es cambiar la información de las variables “$zone_id”, “$email” y “$apy_key” por los valores que hemos visto en los pasos anteriores. En el caso del “$email”, habrá que indicar el email con el que nos registramos en el sistema.

 

Eliminar la caché de algunos archivos

En el caso de querer eliminar solo la caché de determinados archivos, el código que debemos ejecutar es muy parecido, aunque tiene una diferencia importante.

<?php

$zone_id = ‘ZONE_ID’;

$email = ‘EMAIL’;

$apy_key = ‘API_KEY’;

$url = “https://api.cloudflare.com/client/v4/zones/{$zone_id}/purge_caché”;

$headers = [

“X-Auth-Email: {$email}”,

“X-Auth-Key: {$apy_key}”,

“Content-Type: application/json”

];

$post_fields = json_encode(array(“files” => [“http://www.dominioejemplo.com/css/styles.css”,”http://www.dominioejemplo.com/img/cabecera.jpg”, “http://www.dominioejemplo.com/theme/body.html”]));

$curl = curl_init($url);

curl_setopt($curl, CURLOPT_CUSTOMREQUEST, “DELETE”);

curl_setopt($curl, CURLOPT_HEADER, false);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

curl_setopt($curl, CURLOPT_POSTFIELDS, $post_fields);

$response = curl_exec($curl);

if (!$response) {

die(“Error al conectar”);

}

print_r($response);

En este caso, además de cambiar los valores de las variables que hemos comentado anteriormente, hemos sustituido la línea:

$post_fields = json_encode(array(“purge_everything” => true));

Por la siguiente instrucción:

$post_fields = json_encode(array(“files” => [“http://www.dominioejemplo.com/css/styles.css”,”http://www.dominioejemplo.com/img/cabecera.jpg”, “http://www.dominioejemplo.com/theme/body.html”]));

La diferencia entre ambas líneas es clara. En la primera de ellas le decimos que queremos eliminar todos los archivos de la caché. Por otro lado, en el segundo caso, lo que hacemos es pasarle un array con el listado de archivos que se tienen que borrar de la caché.