• Publicidad

Cómo evitar que el browser guarde en caché

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Cómo evitar que el browser guarde en caché

Notapor thiseyramo » 2009-07-24 17:38 @776

Hola a todos,

Pongo esta pregunta en el hilo de Básico, porque me imagino que para muchos de ustedes esto debe ser tema ya más que tratado, pero tengo un problemita con un cgi en el que no me quiere funcionar esto.

Estoy haciendo algo como esto con la intención de evitar que el browser guarde en caché las plantillas que se procesan con un cgi, pero no me está funcionando para nada... usando esto, igual el browser se guarda todo y luego puedo hacer clic en el botón atrás y volver a visualizar cosas que no debería... como ya se deben estar imaginando se trata de una zona en donde el usuario debería estar con una sesión activa basada en cookies.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $now_string = gmtime(time);
  2. print"Cache-Control: Expires: Mon, 26 Jul 1980 05:00:00 GMT\n";
  3. print "Last-Modified: $now_string\n";
  4. print"Cache-Control: no-store, no-cache, must-revalidate, proxy-revalidate\n";
  5. print"Pragma: no-cache\n";
  6. print"Cache-Control: post-check=0, pre-check=0\n";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


¿Alguien me podría decir qué está mal? ¿o si esta es la manera correcta de enfrentar este tema?

¡¡Saludos y de antemano muchas gracias a todos!!

ThiseyRamo
thiseyramo
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2009-06-24 10:00 @458
Ubicación: Bucaramanga, Colombia

Publicidad

Re: Cómo evitar que el browser guarde en caché

Notapor explorer » 2009-07-24 18:00 @792

Mientras que no tengo muy claro todas las opciones para hacer que una página no sea cacheada, veo que hay un fallo: no puedes usar la salida de gmtime() como fecha para el valor de Last-Modified:.

gmtime() devuelve la fecha en formato ctime(3):
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. explorer@casa:~> perl -le 'print scalar gmtime(time)'
  2. Fri Jul 24 22:50:06 2009
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

pero Last-Modified: necesita que el formato de la fecha esté en HTTP-Date:
Sintáxis: [ Descargar ] [ Ocultar ]
  1. Fri, 24 Jul 2009 20:50:06 GMT 
que, como ves, son distintas.

Puedes usar el módulo HTTP::Date para realizar las conversiones.

De todos modos, en la documentación de mod_perl me aparece un comentario diciendo que estas dos cabeceras son las únicas necesarias para evitar el caché:
Sintáxis: [ Descargar ] [ Ocultar ]
  1. Pragma: no-cache 
  2. Cache-control: no-cache 

Mira la Sección 14.32 del RFC 2616.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Cómo evitar que el browser guarde en caché

Notapor thiseyramo » 2009-07-28 00:00 @041

Muchas gracias, al parecer sí era por la fecha del Last-Modified.

Saludos,

ThiseyRamo
`31337´
thiseyramo
Perlero nuevo
Perlero nuevo
 
Mensajes: 14
Registrado: 2009-06-24 10:00 @458
Ubicación: Bucaramanga, Colombia

Re: Cómo evitar que el browser guarde en caché

Notapor explorer » 2009-07-28 04:24 @225

¿Has probado con lo último que te indiqué, las dos últimas cabeceras?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados