Evitar la cache en programación ASP, PHP, Javascript, HTML y en formularios

programacionAlgunos programadores se encuentran con problemas a la hora de refrescar una página web porque a veces la caché nos incordia ofreciendo resultados antiguos.

A mi concretamente me ha pasado en los formularios, cuando se cambia los valores de un “Select” y al refrescar la página, el “Select” del formulario sigue sin cambiar, y eso aunque tenga activado la etiqueta “select” : selected=”selected”.

Para desconectar o evitar la cache, he reunido los siguientes trucos, espero que le sea útil a algún programador de webs:

Evitar la caché en los formularios

En todos los elementos “problematicos” en el form, como los select, hay que escribir: autocomplete=”off”

Por ejemplo, en un “Select” se haría así:

<select  name="OnOff10" id="OnOff10" autocomplete="off">
  <option value="0">Off</option>
  <option value="1">On</option>
</select>

Evitar la caché con ASP

En programación con ASP, para no tener caché al inicio del código se utiliza lo siguiente  :

<%
 Response.CacheControl = "no-cache"
 Response.AddHeader "Pragma", "no-cache"
 Response.Expires = -1
%>

Evitar la caché con PHP

Para forzar saltar la caché en programación con PHP, al inicio del código se utiliza lo siguiente  :

<$$$
    header( "Expires: Mon, 20 Dec 1998 01:00:00 GMT" );
    header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" );
    header( "Cache-Control: no-cache, must-revalidate" );
    header( "Pragma: no-cache" );
$$$>

NOTA: sustituir donde pone “$$$” por el caracter “?”, ya que mi WordPress no me deja ponerlo correctamente.

Evitar la caché de una imagen con PHP

Para que una imagen no quede en la caché y siempre se refresque, se puede utilizar lo siguiente:

<img src="image.php?id?12<$$$=date(ymdHi)$$$>" />

NOTA: sustituir donde pone “$$$” por el caracter “?”, ya que mi WordPress no me deja ponerlo correctamente.

Evitar la caché con HTML

En el HTML hay que poner lo siguiente entre las etiquetas <HEAD> y </HEAD>:

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">

Evitar la caché con JavaScript

Utilizando Javascript, se puede poner el siguiente código en la etiqueta <BODY>, por ejemplo:

<BODY  onLoad="if ('Navigator' == navigator.appName)
document.forms[0].reset();">

Y esto es todo, si alguien tiene más formas, que las escriba en los comentarios. :)

programacion2

8 pensamientos sobre “Evitar la cache en programación ASP, PHP, Javascript, HTML y en formularios”

  1. socrates disculpa, usando el metodo que propones de manejar el querystring, no crees que se llenaria en algun momento la cache del navegador de los visitantes?que recomiendas en dicho caso?

    1. Hola gblumen, depende del tamaño de la caché que tengas asignada en el navegador (generalmente entre 5 y 50MB), pero en todo caso, cuando la caché se llena, va vaciándose borrando los archivos más antiguos que tenga. Cuando digo más antiguos, me refiero que son los que hace más tiempo que no se accede a ellos.

    1. Hola Banel, ¿a cual código de todos te refieres? Cada código se pone en su idioma correspondiente (el de HTML y Javascript en el HTML, el de PHP en el código PHP, etc). No hay ninguno para .htaccess.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *