Cachear tus páginas puede ser algo realmente útil y más aún si tus paginas usan muchas conexiones a la base de datos y están generados con un lenguaje cómo Php, sobre todo cuando hablamos de hostings compartidos en los que el número de peticiones a las bases de datos esta limitado.
Cuando tus páginas son cacheadas el servidor no perderá ni tiempo ni recursos en regenerar una y otra vez estas, unicmanete las cargará de la cache. Vamos a ver cómo podríamos cachear nuestras páginas con Php en tan sólo 5 minutos.
Necesitaremos saber tres cosas antes de comenzar:
Primero si nuestro sitio esta desarrollado en PHP, segundo deberemos saber dar permiso 777 a una carpeta de nuestro directorio (en esta carpeta se albergarán las páginas cacheadas), si no sabes hacerlo pregunta a Google que seguro que resuevle tu duda y por último necesitaremos saber la ruta completa del directorio en cuestión, esto quiere decir ruta física (/home/pepito/public_html/).
Ahora que hemos resulto estas tres cosas podremos en unos simples pasos cachear nuestro sitio Php.
1.
En el raiz de nuestra web crearemos los siguientes archivos: .htaccess, start_cache.php, end_cache.php, y create una carpeta llamada “cache_files”.
2.
Cambiar los permisos a la carpeta “cache_files” a 777.
3.
Dentro de nuestro archivo .htaccess, insertaremos estas dos líneas de código:
php_value auto_prepend_file /home/pepito/public_html/start_cache.php
php_value auto_append_file /home/pepito/public_html/end_cache.php
Deberás cambiar "/home/pepito/public_html/" por la ruta física donde esta albergado tu sitio.
4.
Introduciremos el siguiente código en el archivo “start_cache.php”. De nuevo cambiaremos "/home/pepito/public_html/" por la ruta física de tu sitio.
<?
//Algunos parametros de configuracion
$settings_cachedir = '/home/pepito/public_html/cache_files/';
$settings_cachetime = 3600; //keep cache files for 3600 seconds (1 hour)
//Pagina php
$thispage = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$cachelink = $settings_cachedir.md5($thispage).".html";
if (@file_exists($cachelink)) {
$cachelink_time = @filemtime($cachelink);
if ((time() - $settings_cachetime) < $cachelink_time) { @readfile($cachelink);die(); }
}
ob_start();
?>
5.
Por último introducir este código en el archivo“end_cache.php”.
<?
$fp = fopen($cachelink, 'w');@fwrite($fp, ob_get_contents());@fclose($fp);ob_end_flush();
?>
... y esto es todo amigos. Todas tus páginas incluidas las estáticas HTML seran cacheadas durante 1 hora, transcurrido este tiempo se volverán a generar. Las páginas cacheadas serán guardadas en la carpeta "cache_files" si tienes algún problema deja un comentario que alguien te echará una mano.
Via: Ibzi (Inglés)
Enlaces Relacionados
Seccion Programación (TuFunción)
Tutorial básico de AJAX
Diferencia entre PHP ASP y otros lenguajes de programación
Fácil sistema de autentificación de usuarios (PHP)
Tendencia de los lenguajes de programación
Bases de datos y PHP
Consejos para escribir código Javascript
Perl está muriendo
8 lenguajes de programación que deberías aprender
Escuchando mp3 desde Gmail
5 increibles aplicaciones Javascript
Crear un favicon.ico para tu Web
Fácil sistema de autentificación (login, password) PHP
Llamadas gratis con VoipBuster
Datos de seguridad en contraseñas





Este cache sirve para todas las pa´ginas de un dominio
Hola
Tengo un sitios con muchas carpetas y archivos php y html
Mi pregunta si instalo este caché, sólo funciona para la carpeta por defecto? o ademas cachea todas las páginas en las carpetas interiores?
Por ejemplo:
/public_html/ solo cachea los archivos de esta carpeta.???
O cachea tambien todos los archivos de las carpetas internas ?????
/public_html/blogs/ .... los blogs ya usan un cache.
/public_html/noticias/ .... cachea?
/public_html/varios/ .... cachea?
/public_html/etc/ .... cachea?
hay que instalar este caché en cada carpeta?????
trhrthfgbdfgfgbgc
trhrthfgbdfgfgbgc
Cache y paginas dinámicas
Hola ¿qué tal?
Me pregunto que pasa si yo tengo una home, por ejemplo, que eventualmente puede cambiar sus contenidos. ¿se podrá detectar si los contenidos se alteraron y en tal caso crear un nuevo archivo cache?
Un saludo y gracias!
edu
Caché de algunas páginas
¿Como se puede hacer para cachear solo algunas páginas y no todas?
Saludos.
Que pasa con la concurencia?
Yo cree esta clase para cachear, basicamente hace lo mismo que ustedes en su ejemplo, http://cesarodas.com/2007/06/gcache_helping_php_to_work_faster.html, pero tiene en cuenta que dos o mas procesos PHP quieran escribir el cache, entonces propone un sistema de bloqueo de archivo.
Basicamente su ejemplo funcionara, pero si la pagina es muy muy visitada, existe la posibilidad que no funciona por la concurrencia, de dos o mas procesos escribiendo al mismo tiempo.
Aclaro que con este post mi intension no es denigrar a nadie, tampoco promocionar mi clase, solo es para ayudar a mejorar este punto, ya que su implementation de un cache me parece muy buena y facil.
Muchas Gracias
en la carpeta cache_files, no aparece nada
pues eso, que no aparece nada, con esos pasos es suficiente?
Solo cachear determinadas páginas
Hola,
Se podría hacer de alguna forma para tan solo cachear unas determinadas páginas y otras no que están todas en el directorio principal??
Por ejemplo solo cachear las páginas que contienen http://www.misitio.com/ver_noticia.php.... ??
Me pueden decir que código tendría que cambiar o añadir para esto??
Gracias
Consulta
Hola,
Hay que colocar los archivos creados, .htaccess, start_cache.php, end_cache.php, dentro de la carpeta cache_files o fuera??
Gracias,
Saludos...
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
--------------------------
Tengo este problema al intentar cachear como explican aca. A que se debe?
Internal Server Error
Lo que sucede es que la codificación de caracteres del archivo .htaccess no es la correcta, para ese servidor o hosting, puedes solucionarlo usando el Editor de textos Notepad++, en el menú Formato -> eliges Codificar en ANSI. (en algunos servidores acepta UTF-8), pero es cuestión de probar.
Formularios
¿Que pasa con los formularios?
Es decir, cuando se llega a una pagina y hay datos en POST o GET que deben ser tratados, ¿como los trata la caché?
abria que no cachear
si son enviados por get en teoria no tienes que tener problemas al cachearla. ya que cada peticion distinta daria un resultado distinto aun cacheado.
en post si seria siempre el mismo
el problema es mas de seguridad. ya que si cacheas todas de manera indiscriminada, que pasara al yegar a tu limite de disco duro (un bot que genere una url por segundo en cuestion de minutos genereraria demaciados ficheros no creen)
talves segun la cantidad de trafico sea mas rentable un tiempo mas pequeño de cacheo y porlomenos cada 1:30 borrar todos los archivos que ase mas de una hora no son usados
ese escript seria muy interesante
y las paginas...
y las paginas cacheadas... se reescribiesen? o el directorio va creciendo?
Luego otra duda es... solo entrar en el dominio, aparecerá la pagina creada en cache y si hay un cambio, hasta la siguiente generación no aparecerá visible?
Gracias, y un saludo
A la primera pregunta
A la primera pregunta efectivamente las paginas se reescriben pero siempre y cuando la url llamada sea la misma, el directorio irá creciendo en la medida que la web tenga más paginas, por otra parte comviene cada cierto tiempo limpiar el directorio eliminando aquellas paginas que ya no existen.
A la segunda pregunta si hay un cambio se podrá ver cuando caduquen las paginas de cache en este caso es una hora, este parametro se puede modificar pero conviene mantener un tiempo suficiente para que el servidor no se sature generando una y otra vez paginas de cache, menos de 15 minutos sería un desperdicio de este servicio por lo que seria mejor ofrecer las paginas de manera dinamica.
Saludos
Enviar un comentario nuevo