Foros del Web » Programando para Internet » PHP »

Evitar que la página quede en Cache

Estas en el tema de Evitar que la página quede en Cache en el foro de PHP en Foros del Web. Estoy intentando (hace mucho tiempo) hacer una galería de imágenes basada en Flash. La misma genera las categorías mediante un archivo xml. El tema es ...
  #1 (permalink)  
Antiguo 16/06/2010, 05:25
Avatar de lyoung  
Fecha de Ingreso: noviembre-2005
Ubicación: Montevideo, la gran capit
Mensajes: 139
Antigüedad: 18 años, 5 meses
Puntos: 0
Evitar que la página quede en Cache

Estoy intentando (hace mucho tiempo) hacer una galería de imágenes basada en Flash.
La misma genera las categorías mediante un archivo xml.

El tema es que cuando vuelvo a visitar la página la galería me muestra solo las fotos de la última categoría vista. Genera correctamente el xml pero la página no lo lee.
Si borro el historial, entonces si, funciona bien hasta la póxima visita.

El archivo php:
Código PHP:
<?php
      header
("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
      
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
      
header("Cache-Control: no-store, no-cache, must-revalidate");
      
header("Cache-Control: post-check=0, pre-check=0"false);
      
header("Pragma: no-cache");


@
session_start();


if (isset(
$_GET['org'])){

switch (
$_GET['org']) {
    case 
dep:
        
$consultam consulta($database_uruguay360,$uruguay360,'departamentos','','','','');
        
$motivo 'departamento';
        break;
    case 
obj:
        
$consultam consulta($database_uruguay360,$uruguay360,'objetivos','','','','');
        
$motivo 'objetivo';
        break;
    case 
tem:
        
$consultam consulta($database_uruguay360,$uruguay360,'temas','','','','');
        
$motivo 'tema';
        break;
    }
$xml_gal=creagaleria($database_uruguay360,$uruguay360,$consultam,$motivo);
//La funcion creagaleria genera el archivo xml (la pongo más abajo)
}      ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head> 
<title>Galer&iacute;a de im&aacute;genes | Uruguay 360</title>
<link href="estilos_360_azul.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="swfobject.js"></script>
<style type="text/css">
<!--
body {
    background-color: #000000;
}
-->
</style>
<link rel="shortcut icon" href="Favicon.ico" type="image/x-icon" />
</head>

<body bgcolor="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" scroll="no">
 <div class="menu_galeriaa">
 <div class="dentro">
 <a href="<?php echo $_SESSION['pagactual']; ?>">Vovler</a> 
      <a href="galeria.php?org=dep">Departamento</a><a href="galeria.php?org=obj">Objetivo</a><a href="galeria.php?org=tem">Tema</a></div>
</div>
    <div id="flashcontent">
        <strong>You need to upgrade your Flash Player.</strong>
    </div>

//Este script coloca la galería en la página
    <script type="text/javascript">
        var so = new SWFObject("preview.swf", "sotester", "100%", "750", "7", "#000000");
        so.addParam("allowFullScreen", "true");
        so.addParam("scale", "noscale");
        so.addParam("menu", "false");
        so.write("flashcontent");
    </script>
</body>
</html>
La funcion creagaleria:
Código PHP:
function creagaleria($database_uruguay360,$uruguay360,$consultam,$motivo){

    $galeria = '<?xml version="1.0" encoding="utf-8" standalone="yes"?><content>';
    
    while ($row_consultam=mysql_fetch_assoc($consultam)){
    $galeria.='<gallery Name="'.$row_consultam['nombre_'.$motivo].'" Folder="fotos">';
    
    $id_motivo='id_'.$motivo;


    $foto1=consulta($database_uruguay360,$uruguay360,'fotos',$id_motivo,$row_consultam['id_'.$motivo],'id_foto','desc');
//    La funcion consulta genera consultas mysql, funciona bien y la uso en practicamente todo el sitio sin problemas

          while ($row_fotos = mysql_fetch_assoc($foto1)){    
          $galeria.='<image Thumb="min_gal/'.$row_fotos['mini_foto'].'" Large="'.$row_fotos['mini_foto'].'" Caption="'.$row_fotos['nombre_foto'].'" Colour="000000">
        <copy><![CDATA[<p>'.$row_fotos['com_foto'].'</p>]]></copy>
        </image>';
          }
         $galeria.= '</gallery>';
          }
         $galeria.='</content>';
    

        
                    $nnota='content.xml';
                    $nnombre=fopen($nnota,"w+");
                    fwrite($nnombre,$galeria);
                    fclose($nnombre);
    
}
Pueden verla en versión de prueba en Este enlace

Desde ya, muchas gracias.
__________________
Todo se ve mejor si le miramos el lado positivo.
  #2 (permalink)  
Antiguo 16/06/2010, 08:19
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Evitar que la página quede en Cache

bueno en realidad me da flojera leer todo tu tema.. pero el tema del cache lo eliminas facil con un valor random en la url que vas a cargar.. ejemplo si es una imagen
Código PHP:
Ver original
  1. <img src="imagen.jpg?cache=<?php echo md5(time()); ?>" />

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 17/06/2010, 03:32
Avatar de lyoung  
Fecha de Ingreso: noviembre-2005
Ubicación: Montevideo, la gran capit
Mensajes: 139
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: Evitar que la página quede en Cache

Cita:
Iniciado por Hidek1 Ver Mensaje
bueno en realidad me da flojera leer todo tu tema.. pero el tema del cache lo eliminas facil con un valor random en la url que vas a cargar.. ejemplo si es una imagen
Código PHP:
Ver original
  1. <img src="imagen.jpg?cache=<?php echo md5(time()); ?>" />

saludos!
Bueno, no es para tanto.

A ver si te entendí.
La idea sería que esta línea:
Código PHP:
var so = new SWFObject("preview.swf""sotester""100%""750""7""#000000"); 
Sea cambiada por esta otra:
Código PHP:
var so = new SWFObject("preview.swf?cache=<?php echo md5(time()); ?>", "sotester", "100%", "750", "7", "#000000");
Pues, lo intenté, pero sigue haciendo lo mismo.
En un principio anda todo bien, pero cuando vuelvo a entrar, luego de un tiempito, solo me muestra una galería.
Si borro el historial comienza a funcionar nuevamente.
__________________
Todo se ve mejor si le miramos el lado positivo.
  #4 (permalink)  
Antiguo 17/06/2010, 09:12
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 2 meses
Puntos: 10
Respuesta: Evitar que la página quede en Cache

Es correcto lo que te explicaron, pero lo has aplicado mal.

Mira:

Tu tienes una url en la cual ves las fotos. Esa url sale en la barra del navegador...

Bueno a esa url le debes aplicar ese metodo.

Si no sabes como hacerlo haz una prueba manualmente.

Ejemplo a la ruta a tu galeria con esto agregado "?cache=1234"

http://www.tudominio.com/galeria/ver...php?cache=1234

si luego pones otro numero el navegador ira a buscar la pagina al servidor, no a la cache

http://www.tudominio.com/galeria/ver...hp?cache=43256


...Bueno pero debes ver el modo de hacerlo dinamico...

En algun lugar, en un lik en un header() en lo que realizes una solicitud a esa url, entonces alli pones.


http://www.tudominio.com/galeria/verfotos.php?cahce=<?php echo md5(time()); ?>

Ojo debes tener cuidado en la sintaxis: es diferente si estas dentro de html o dentro de php.
  #5 (permalink)  
Antiguo 17/06/2010, 09:25
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 2 meses
Puntos: 10
Respuesta: Evitar que la página quede en Cache

Y ahora que lo veo creo que aqui:


Código PHP:

<a href="galeria.php?org=dep">Departamento</a>

Seria asi (si este link te lleva a esa galeria):

<a href="galeria.php?org=dep&cache=<?php echo md5(time()); ?>">Departamento</a>
  #6 (permalink)  
Antiguo 18/06/2010, 03:36
Avatar de lyoung  
Fecha de Ingreso: noviembre-2005
Ubicación: Montevideo, la gran capit
Mensajes: 139
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: Evitar que la página quede en Cache

wiwi74:
Tu respuesta me ayudó a encontrar una línea para investigar.

Resulta que la carpeta de fotos las llama el xml, por lo que probe agregar lo siguiente al generar el xml.

Código PHP:
$nocach md5(time()); 
y más adelante esto:

Código PHP:
$galeria.='<gallery Name="'.$row_consultam['nombre_'.$motivo].'" Folder="fotos?cache='.$nocach.'">'
Ahora se generan las galerías correctamente, pero surgió otro problema
Las imágenes no se muestran.

Les pongo la parte de código xml que se genera por si ven algo que pueda ayudar:

Código PHP:
<gallery Name="Monumento" Folder="fotos?cache=43c5931f1bf5243c484fb28d958386a4">
<
image Thumb="min_gal/24.jpg" Large="24.jpg" Caption="etiquetas" Colour="000000">
    <
copy><![CDATA[<p>d</p>]]></copy>
</
image>
<
image Thumb="min_gal/23.jpg" Large="23.jpg" Caption="etiquetas" Colour="000000">
    <
copy><![CDATA[<p>d</p>]]></copy>
</
image>
<
image Thumb="min_gal/7.jpg" Large="7.jpg" Caption="Artigas" Colour="000000">
    <
copy><![CDATA[<p>Monumento en Plaza Independencia</p>]]></copy>
</
image>
<
image Thumb="min_gal/1.jpg" Large="1.jpg" Caption="Primera foto" Colour="000000">
    <
copy><![CDATA[<p>comentario</p>]]></copy>
</
image>
</
gallery

Esto genera una galería llamada Monumento con las fotos 24, 23, 7 y 1 pero no se ven.
__________________
Todo se ve mejor si le miramos el lado positivo.
  #7 (permalink)  
Antiguo 18/06/2010, 12:15
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 2 meses
Puntos: 10
Respuesta: Evitar que la página quede en Cache

Lo que sucede aqui es que estarias cambiado el nombre de la carpeta donde estarian las carpetas (si no me equivoco):

Código PHP:

Folder
="fotos?cache=43c5931f1bf5243c484fb28d958386a4" 

En realidad debes hacer todo lo que hacias, que ya te funcionaba, solo que no te mostraba las imagenes distinas cuando lo deseabas.


A ve si te lo pude explicar mejor:

Cunado haces una peticion http, el navegador primero busca esa pagina en al cache (en su cache) a ver si se halla tal pagina, para evitar tener que ir hasta el servidor a buscarla, si la encuentra veras esa pagina, la que ya alguna vez viste, la ultima vez...

Lo que hace ese agregado en la url es engañar al navegador, pues ese agregado la hace "diferente" pues tiene una "extension" que antes no tenia, entonces el navegador ira a buscar la nueva peticion al servidor.

Solo debes hacer eso, concatenar esas lineas a la url...

Quiza no desees mostrar la url absoluta, pero puedes hacer esto:

Postea esto (ejemplo):

Código PHP:

http
://www.xxxxxxxx.com/galeria/archivo.php 

Tan solo no muestres tu dominio; hazlo asi:


Código PHP:

www
.xxxxxxxx.com 
  #8 (permalink)  
Antiguo 25/06/2010, 04:25
Avatar de lyoung  
Fecha de Ingreso: noviembre-2005
Ubicación: Montevideo, la gran capit
Mensajes: 139
Antigüedad: 18 años, 5 meses
Puntos: 0
Respuesta: Evitar que la página quede en Cache

He llegado a la concluisón que mi problema no está en el php ni en el xml, sino en el flash.

la sentencia que llama al xml desde flash:

xmlData.load("http://dominio.com/content.xml");

es la que lee desde el cache y por eso no cambia nada.

Si alguien puede tirar una pista lo agradezco, pero de todos modos ya inicié un tema en el foro de flash, por lo que doy por terminado este tema.

Gracias a todos por su colaboración.
__________________
Todo se ve mejor si le miramos el lado positivo.
  #9 (permalink)  
Antiguo 25/06/2010, 07:12
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Evitar que la página quede en Cache

valor_random = ni idea de AS.. pero alguna funcion debe tener para sacar un valor random...
xmlData.load("http://dominio.com/content.xml?cahe=valor_random");

saludos!
__________________
More about me...
~ @rhyudek1
~ Github

Etiquetas: cache, quede
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 16:36.