Evitar caché de imágenes en Internet Explorer
Buenos días a todos.
Llevo peleándome un tiempo con la maldita caché de ie (en el resto de navegadores no tengo problema) en una aplicación php. Os cuento:
Tengo una interfaz en la que el usuario ingresa productos en una bd mysql y a su vez sube la imagen de cada producto. Una vez enviado el formulario, las imágenes ya subidas, se muestran al usuario para comprobarlas y/o editarlas.
Aquí viene el problema, que si yo edito ese producto, subiendo una nueva imagen, al mostrar de nuevo la página, en Internet explorer me sigue mostrando la imagen anterior, la que estaba en caché.
Se soluciona si pulsas F5 (evidentemente no es viable).
Una solución válida es añadirle un parámetro aleatorio con php a la propia imagen a mostrar (imagen.jpg?nocache=87987897), para que así la imagen a mostrar siempre tenga una ruta distinta.
Pero creo que en el fondo eso es una ñapa. Además, estaría llenando sin necesidad los archivos temporales de los usuarios.
Quisiera saber si hay alguna solución realmente idónea para este problema. Ya he probado varias opciones poniendo diferentes cabeceras con PHP
header("Cache-Control: .... etc
y directamente en el HEAD
<meta http-equiv="Pragma" content="no-cache">...etc
pero ninguna funciona en ie.
Muchas gracias de antemano.
Juanangt
Hola efrén,
Te hablo muy de memoria.... las cabeceras de php sólo sirven para la página actual (o sea el php en sí) pero no para los recursos (javascripts, imagenes, css).
Una opción para evitar la imagen en lugar de linkarla directamente utilices un php de puente estilo verimagen.php?id_producto=x .Ahí si que podrías poner las cabeceras de php.
Saludos,
Juanan
efrén
Gracias por tu respuesta Juanangt.
La verdad es que de momento he utilizado la solución de pasarle un parámetro a las imágenes.
Lo que me comentas es buena idea, aunque querría encontrar alguna solución más directa, es decir, que no tuviera que utilizar "trucos".
Un saludo.
Juanangt
Efrén,
Otra forma sería vía configuración de servidor. Me consta que en IIS se puede cambiar los permisos de una carpeta para que no se cachee el contenido . Pero eso sólo lo podrías hacer si tienes acceso a dicha configuración, los Hostings generalmente no te dan dicho acceso. También creo que con un fichero ".htaccess" (si en lugar de IIS usas Apache) se puede configurar. Lo malo es que muchos hostings también dan capadas muchas de estas funciones....
Tu solución es válida y correcta, yo no lo consideraría ningún truco. Y con la mía podrías llegar incluso a poder mostrar una imagen genérica (un imagen no disponible) en caso de que el producto no tenga imagen y hasta poder mostrar las imágenes sólo si es un usuario autenticado...
Saludos!
efrén
He estado informándome un poco acerca de solucionarlo vía .htaccess, y estoy a la espera de que me confirmen desde el servidor si puedo editar dicho archivo.
Cuando sepa algo os lo comento.