Te dejo un ejemplo, es muy cutre pero lo hice ahora para darte una idea a lo que me referia..
1. crea una carpeta en tu pc "ejemplo_cache"
2. dentro de la carpeta "ejemplo_cache" crea otra subcarpeta con el nombre "cache"
3. Crea la tabla "ejemplo_cache" en tu base de datos con la siguiente estructura
Insertar CODE, HTML o PHP:
-- phpMyAdmin SQL Dump
-- version 3.5.2.2
-- http://www.phpmyadmin.net
--
-- Servidor: 127.0.0.1
-- Tiempo de generación: 08-04-2014 a las 17:33:52
-- Versión del servidor: 5.5.27-log
-- Versión de PHP: 5.4.6
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Base de datos: `bd_laboratorio`
--
-- --------------------------------------------------------
--
-- Estructura de tabla para la tabla `ejemplo_cache`
--
CREATE TABLE IF NOT EXISTS `ejemplo_cache` (
`id_registro` int(11) NOT NULL AUTO_INCREMENT,
`titulo` varchar(250) NOT NULL,
`contenido` text NOT NULL,
PRIMARY KEY (`id_registro`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--
-- Volcado de datos para la tabla `ejemplo_cache`
--
INSERT INTO `ejemplo_cache` (`id_registro`, `titulo`, `contenido`) VALUES
(1, 'Titulo 1', 'Contenido del titulo 1'),
(2, 'Titulo 2', 'Contenido del titulo 2');
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
4. crea un archivo
index.php con el siguiente contenido
PHP:
<?php
global $cache;
//carpeta cache
$cache = 'cache';
$resultadoCacheado = false;
$connection = new mysqli('localhost','usuario bd','password bd', 'nombre base de datos'); //aca deben modificar acorde a sus datos de conexion a la BD y el nombre de BD
if ($connection->connect_errno)
{
echo "Fallo al conectar a MySQL: (" . $connection->connect_errno . ") " . $connection->connect_error;
}else{
echo '<strong>Sistema de Cache PHP</strong>';
echo '<br />';
//vemos si existe el archivo
$nombreArchivo = $cache.'/cache_ejemplo_cache.php';
if (!file_exists($nombreArchivo))
{
$sql = $connection->query("select c.* from ejemplo_cache c");
while($rows = mysqli_fetch_assoc($sql))
$content[$rows['id_registro']] = array(
'titulo' => $rows['titulo'],
'contenido' => $rows['contenido'],
);
//cacheamos la primera ves que entramos
cacheando($content, 'ejemplo_cache');
$resultadoCacheado = false;
}else{
require_once($cache.'/cache_ejemplo_cache.php');
$content = unserialize($valor); //la variable $valor se encuentra en al archivo
$resultadoCacheado = true;
}
//impresion del resultado
echo ($resultadoCacheado) ? 'El Vector ha sido Cacheado' : 'El Vector no ha sido Cacheado';
echo '<br />';
print_r($content);
}
//para crear el archivo php
function cacheando($vector, $nombrearchivo)
{
global $cache;
$serialize = serialize($vector);
$contenido = '<?php $valor = \''. $serialize .'\'; ?>';
$rutaArchivo = $cache.'/cache_'.$nombrearchivo.'.php';
crearArchivoPHP($rutaArchivo, $contenido);
}
//para crear los archivos php
function crearArchivoPHP($filename, $contenido)
{
//borramos el archivo
if (is_file($filename))
unlink($filename);
//creamos el archivo
$archivo = fopen($filename, 'w');
//escribimos en el archivo
fwrite($archivo, $contenido);
fclose($archivo);
}
?>
Como dije es un ejemplo a lo que me refiero, es una base que puede ser modificada sin problema y agregar mas opciones como la expiracion automatica de los archivos y demas cosas..