Evitar Cacheo de Imágenes Codeigniter

Planteamiento del problema

Cuando se actualiza una aplicación web, de cara al usuario final pueden existir cambios tanto en el html de la página como en los ficheros que la complementan, típicamente css, js e imágenes. Puesto que los navegadores suelen cachear este tipo de ficheros, puede ocurrir lo siguiente:

El usuario Pepito navega tranquilamente por la web A. Su navegador cachea los css, js e imágenes. Poco después, los desarrolladores de la web A deciden realizar una actualización que implica tanto cambios en el html final como cambios en los css, js e imágenes. Pepito vuelve a entrar en la web A y su navegador descarga únicamente el html, tomando el resto de ficheros de su cache. Por lo tanto, no actualiza los css, js ni imágenes. Pepito estaría viendo el html nuevo junto con los css, js e imágenes antiguos. Probablemente esta mezcla de versiones haría que Pepito no visualizara correctamente la web.

Solución al problema

<img width=”100px” height=”100px” src=”‘uploads/imagenes_publicaciones/0.jpg”.”?”.random_string(‘alnum’, 10).time();?>” class=”img-responsive” alt=”Imagen publicación”>

El truco está en engañar al navegador mediante la funcion random_string(‘alnum’, 10).time() que genera un token aleatorio en la url de la imagen, por lo que el navegador como no tiene cacheada esa url la carga de nuevo.

La url de carga de la imagen quedaría así:

http://lapaginaweb.com/index.php/uploads/imagenes_publicaciones/0.jpg?gEXCGyBNiL1399290361

la parte que es distinta cada vez que se carga la pagina es la que va en negrita, por lo que el navegador al buscarlo en su caché, al no encontrar ninguna imagen con esa url la carga de nuevo.