Saltar al contenido
Codifíca.me | Desarrollo web | Programación
Php

Como utilizar la cache con php

29 abril, 2014

Para cachear páginas con Php tenemos podemos utilizar un script que hará lo siguiente:

Primero ver si ya está la página que queremos enviar en la cache, y si existe pues la enviará, reduciendo costes y llamadas a la base de datos, etc.

Segundo, si no existe la página que queremos enviar la creará, y así estará disponible para la próxima vez que se envíe la web.

Por ultimo, también tendremos que poner una duración de los ficheros que hay en la cache, para ir reemplazándolos por otros cada equis tiempo.

Tendremos dos ficheros de cache, al primero lo llamaremos antes de leer cualquier linea, si tu página comienza en el index.php, pues en la primera linea pondríamos llamaríamos a este script.

<?php
include ('empezar.php');
?>

El script empezar.php

<?php
$url = $_SERVER["SCRIPT_NAME"];
$break = Explode('/', $url);
$file = $break[count($break) - 1];
$cachefile = 'cached-'.substr_replace($file ,"",-4).'.html';
$cachetime = 18000;
 
// Serve from the cache if it is younger than $cachetime
if (file_exists($cachefile) && time() - $cachetime < filemtime($cachefile)) {
    echo "<!-- Cached copy, generated ".date('H:i', filemtime($cachefile))." -->\n";
    include($cachefile);
    exit;
}
ob_start(); // Start the output buffer
?>

Ahora iremos a la última linea que queremos cachear, en muchas webs será el footer
Vamos al footer y llamamos a esta otro script.

<?php
include ('acabar.php');
?>

El script acabar.php sería así:

<?php
// Cache the contents to a file
$cached = fopen($cachefile, 'w');
fwrite($cached, ob_get_contents());
fclose($cached);
ob_end_flush(); // Send the output to the browser
?>

Con esto lograremos utilizar el cache para mejorar la velocidad de la web.