MuniManantay

MuniManantay

Municipalidad de Manantay

Reaching in to Heaven

Reaching in to Heaven

Artistic Expression

Gyanamala

Gyanamala

Healing is simple

The Word of the Lord

The Word of the Lord

BroadCasts Religious

Ene
31

Sistema de Caché Simple en PHP

Escrito por Carlos Montalvo hace 1 año y 1 mes

Uno de las mejores alternativas para que tus proyectos en php se muestren más rápido es la de implementar un sistema de cache, con lo que ganamos velocidad y él un consumo reducido de nuestro servidor.

Hoy veremos un Sistema de Cache Simple en PHP, pero lo suficientemente flexible como para poder adaptarla a cualquier proyectos y personalizarla conforme a nuestras necesidades.

La Clase de Cache en PHP

/* file     : cache.class.php
 * Clase  : m2Cache
 * Original: http://www.calinsoft.com/2009/01/sistema-de-cache-simple-en-php.html
*/

//Algunos parámetros de configuración
define('ABSPATH', dirname(__FILE__) );

//Directorio donde almacenaremos los archivos cacheados
define('CACHE_DIR',
	ABSPATH . '/cache'); // tiene que tener permisos 777

//El tiempo que la copia se mantendrá vigente.
define('CACHE_TIME', 3600 ); // 3600 segundos 1 hora.

// La dirección de la Pagina Donde nos encontramos
define('PAGE',
	'http://'. $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']
);

// La dirección de la pagina con el nombre encriptado
define('CACHE_LINK',
	CACHE_DIR . "/" . md5( PAGE ) . ".html"
);

class m2Cache
{
       //Variable para activar el Sistema de Cache
	var $enableCache;

	//Variable para almacenar el tiempo de la creación del archivo
	var $time;

	function m2Cache(){
                //por defecto el sistema  de cache estará desactivado
		$this->enableCache	= false;
                //el tiempo por defecto empieza en 0
		$this->time			= 0;

	}

	//Función para activar el Sistema de cache.
	function enable(){

		$this->enableCache = true;

	}

        // Retorna el estado Actual del  Sistema.
	function status(){

		return $this->enableCache;
	}

        // Función Inicio del Cache.
	function startCache()
	{
	         // verificamos estado
		if ($this->status()):
                       //verificamos que existe la pagina en cache
			if ( @file_exists( CACHE_LINK ) ):
			        // si existe obtenemos la hora de creación del archivo.
				$this->time = @filemtime( CACHE_LINK );

                                // verificamos si está adentro del tiempo permitido.
				if ( ( time() - CACHE_TIME ) < $this->time ):
					// si está adentro del tiempo
                                       // mostramos la pagina cacheada.
					@readfile( CACHE_LINK );

					 die();

				 else:
				 	//Si Expiro se elimina, para prevenir conflictos.
				 	@unlink( CACHE_LINK );

				 endif;

			endif;

			//Habilitamos el uso de búferes de salida
			ob_start();

		else:
		       // no está el activado sistema de cache
			return false;

		endif;

	}

	//función de término del sistema de cache
	function endCache()
	{
		//verificamos estado del sistema de cache
		if ($this->status()):

                        //Creamos el archivo
			$fp = fopen( CACHE_LINK , 'w' );
			// escribimos adentro de el.
			@fwrite( $fp , ob_get_contents() );
			//cerramos
			@fclose( $fp );

			//Volcamos el búfer de salida y deshabilitamos el uso del búfer
			ob_end_flush();

		else:
		        // no está el activado sistema de cache
			return false;

		endif;

	}

}

Método de Uso

/* file: index.php
Para usarlo solo incluimos la clase dentro de la pagina que deseemos cachear.
*/

include 'cache.class.php';

// Instanciamos
$cache = new m2Cache();

// Activamos el cache
$cache->enable();

//al comienzo de la pagina añadimos esto

$cache->startCache();

/*
acá vendría la pagina en si comenzando supuestamente por
<html>
<head>
<body>
.......................
.......................
.......................

Y luego

</body>
</html>
*/

//al final añadimos
$cache->endCache();

Conclusión y Descarga de archivos

Con el parámetro CACHE_DIR indicamos el directorio donde almacenaremos la cache , con CACHE_TIME indicamos el tiempo de vida de la cache (en este caso 60 minutos/1 hora) y la función $cache->enable(); de la clase la cual nos permite activar el sistema de cache por defecto esta desactivado (muy bueno cuando uno va hacer cambios en la pagina).

He realizado una mini página sencilla adaptándola al sistema de cache para que observen su funcionamiento correcto, en la cual la estructura de archivos es la siguiente.

sistema_cache

Si tienen alguna duda sobre la clase pregunten, cabe resaltar como dije al principio que esta clase es muy simple pero flexible.

Descarga


Categorizado: Desarrollo Web | Web2Dev
Etiquetado: |

Comparte esta noticia:

Articulos Relacionados

2 Valiente(s) Opinaron, falta el tuyo comenta


    Por juanolo2001 el Jun 5, 2009 Responder este comentario
    1

    Tiene muy buena pinta tu codigo para el cache.

    Te queria preguntar una cosa…
    Todos estos sistemas de cache… No son recomendados para paginas en las que manejan variables de tipo POST o GET ¿verdad?

    He oido que si se pasan nuevos valores con estas variables y la pagina esta en cache, tomara la pagina de cache con los valores de esta y no los nuevos valores introducidos no?

    Un saludo


    2

    Realmente un sencillo script que nos permitira optimizar al maximo nuestro sistema

    Gracias lo probare ahora .


Danos tu opinion sobre esta noticia.

CalinSoft se reserva el derecho de eliminar o editar todo comentario que considere ofensivo o difamatorio. Debatir, criticar NO ES INSULTAR.