Utilizando el cache de páginas con PHP

Cuando desarrollamos una página en PHP que necesita cargar información desde una base de datos nos encontramos que, en principio, se lanza una petición a la base de datos con cada recarga, que luego se procesa con el código PHP. Si tenemos una página web con poco tráfico (un blog, la página web de un grupo musical o un negocio), una web cuya información no cambie mucho, nos puede interesar crear un archivo de cache para evitar esta recarga. Esto ralentizará un poco la primera carga de la web, pero agilizará las sucesivas recargas de la misma, facilitando la navegación. En caso de páginas web optimizadas para dispositivos móviles (smartphone y tabs), que suelen depender de redes más lentas que los PC (por tirar de conexión 3G) es una opción muy válida.

Lo primero es crear una carpeta con permisos de escritura a la que llamaremos cache/ para almacenar ahí los archivos. Ok, allright, yeah man. Cuando nos metamos con el código (que pondré en un ejemplo más abajo) tenemos que pensar que hay que establecer un tiempo de expiración de la página, ya que si no no se recargaría nunca. Lo mejor es darle un tiempo que creamos prudencial para que sea eficiente sin llegar a dejar desactualizado al usuario. En fin, teniendo en cuenta todo esto, el código sería el siguiente:

$archivoCache = "cache/".$elnombrequecorresponda.".html"; //El archivo con el caché
$tiempoCache = 600; // el parámetro va en segundos, así que serían 10 minutazos

if (file_exists($archivoCache) && (time() - $tiempoCache
< filemtime($archivoCache)))
{
    include($archivoCache);
    echo "\n";
    exit;
}
ob_start(); //inicialización del buffer de salida

//Aquí iría el código PHP y HTML que corresponda

$fp = fopen($archivoCache, 'w'); //Abrimos el archivo con el cache

fwrite($fp, ob_get_contents());//Escribirmos el archivo
fclose($fp);//Cerramos el archivo IMPORTANTE!!!!! que mucha gente se olvida
ob_end_flush(); //limpiamos el buffer para evitar errores

En fin, creo que con estas instrucciones comentada ya os vais pispando todos de cómo funciona la cosa. Par el ejemplo di un tiempo de 10 minutos (ajustad vosotros según creáis conveniente) y la variable $elnombrequecorresponda pues… eso, que ahí ponéis el nombre que corresponda al archivo que queréis cachear.

En fin, chavatares, con esto me voy a dormir, que es tarde… o puede que no, porque no se si mi ordenador a cambiado o no la hora automáticamente. Si mañana llego tarde a todas partes le echaré la culpa. Un cibersaludo!!

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s