Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Problema Smarty con Cacheando las páginas.

Estas en el tema de Problema Smarty con Cacheando las páginas. en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Utilizo Smarty, una maravilla de motor de plantillas, pero tengo el siguiente problema que no he podido solucionar. Se trata de cache de páginas que ...
  #1 (permalink)  
Antiguo 18/06/2006, 11:14
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
Problema Smarty con Cacheando las páginas.

Utilizo Smarty, una maravilla de motor de plantillas, pero tengo el siguiente problema que no he podido solucionar.

Se trata de cache de páginas que incorpora Smarty.
Código PHP:
$smarty->caching=true
las páginas quedan cacheadas sin problema, funciona bien, resuta que como la página está cacheada esta se mantiene igual, es decir no cambia, entonces si ingreso una noticia en la base de datos esta no surge cambios en la página cacheada, o si un usuario se logea no muestra su menú de preferencia ya que en la pagina cacheada esta no aparecía.

Por ahi leí que smarty era inteligente y detectaba si habian cambios en el html generado de la página cacheadas, pero esto no me está funcionando.

tambien probé colocando la variable:
Código PHP:
$smarty->compile_check true
que supone que chequea si hay nuevas compilaciones, pero no sucede nada.

Alguna idea?.
  #2 (permalink)  
Antiguo 18/06/2006, 15:57
 
Fecha de Ingreso: septiembre-2005
Mensajes: 142
Antigüedad: 18 años, 7 meses
Puntos: 3
por defecto Smarty cachea la página con un tiempo de vida de 1 hora.

Te recomendaría lo siguiente:

No establecer políticas de cache en la parte privada.

Antes de programar establecer el sistema de cache que necesites en cada página. No te obsesiones.

Para dar un tiempo de vida individialmente a cada página que quieras cachear haremos lo siguiente:
Código PHP:
require('Smarty.class.php');
$smarty = new Smarty;

$smarty->caching 2// para cachear individualmente

$smarty->cache_lifetime 300// lo ponemos a 5 minutos
$smarty->display('portada.tpl');

// seteamos el menu a 1 hora de cache ya que practicamente no va a cambiar
$smarty->cache_lifetime 3600;
$smarty->display('menu.tpl'); 
Es bastante fácil luego tienes el tema más avanzado que es cachear una página por partes. Por ejemplo cuando tienes un listado páginado. En fin espero que te sirva.
  #3 (permalink)  
Antiguo 18/06/2006, 18:16
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
lo que necesito es que me actualize el cache si el archivo ha cambiado.

por ejemplo si un usuario al habrir una sesion o se logea ya no le aparece el formulario de login en el home, al logearse dicho formulario es cambiado por una bienvenida, es ahí donde tengo el problema, ya que al estar cacheada la página no cambia instantaneamente en el momento en que el usuario se ha logeado, me sigue mostrando el formulario de login.

necesito que sea instantaneo.

nose si me expliqué bien.
  #4 (permalink)  
Antiguo 19/06/2006, 03:43
 
Fecha de Ingreso: septiembre-2005
Mensajes: 142
Antigüedad: 18 años, 7 meses
Puntos: 3
A ver es lo que te he dicho antes el login del usuario forma parte de la parte privada no caches las páginas privadas. Por qué quieres hacer eso?
  #5 (permalink)  
Antiguo 19/06/2006, 07:16
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
es que esa pagina es el home y hay muchos querys, en el fondo la queria cachear para optimizar y evitar las consultas.
  #6 (permalink)  
Antiguo 19/06/2006, 07:21
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Yo he tenido el mismo problema, lo que me ha hecho perder la confianza al cache (o no entendí la idea de su particular funcionamiento) y lo tengo por defecto deshabilitado.

Por concepto, el cache debe siempre actualizarse cuando hay cambios (lo cual no está haciendo), pero tampoco me cierra si el funcionamiento normal de Smarty (sin el cache) hace a sus vez de cache (lo que podría llegar a ser redundante).

La única forma que he encontrado de actualizarlo en su configuración estándar fue borrando el directorio de cache, pero eso no tiene sentido ni aplicación.

De todas formas, creo que no es necesario el uso del mismo, por lo que explicaba en los puntos anteriores. Puedes combinarlo, si quieres, con la sentencia STRIP, que permite "comprimir" todo el fuente, bajando el tamaño del mismo, acelerando su "bajada". Puedes poner todo tu fuente, o solo secciones, y hay que tener en cuenta que si lo haces sobre código javascripts puede dejar de funcionar.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #7 (permalink)  
Antiguo 19/06/2006, 07:25
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Mmmm... no, el cache no hace magia. Si esa página es muy dinámica y tiene muchas consultas, no tiene sentido el cache (o por lo menos este tipo de cache).

Deberías usarlo en casos donde la página sea muy estática y así te evitas que siempre se corra el proceso normal de generación de la página, devolviendola cada vez que se la solicitan como si esta fuera estática (emulando un .html).
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #8 (permalink)  
Antiguo 19/06/2006, 09:58
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 5 meses
Puntos: 8
muchas gracias enriqueplace, era justo lo que necesitaba saber.

Salu2,


zsamer
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:30.