Con django-compress
, está tratando CSS y JS como archivos dinámicos, lo cual está bien. Sin embargo, los otros archivos son estáticos, y Django realmente no quiere publicarlos. Deben ser atendidos directamente por Apache u otro servidor web.
con Apache, que había puesto algo así como
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT"
</FilesMatch>
en .htaccess
o la configuración global de Apache.
Actualización: Respondiendo a tu comentario - Disculpa, no entendí el matiz de tu pregunta. No hay mucho que pueda hacer para evitar el uso de una URL diferente para indicarle a un cliente que un archivo (por ejemplo, una imagen) ha cambiado. Esto es recomendado por ej. Apache y YAHOO!
La implementación de esto es IMO no demasiado difícil. Está en dos partes:
- usar una etiqueta (aquí hay una useful snippet) para generar URL versionados a los archivos multimedia que aparecerán en el código HTML. La URL versionada podría ser la URL base con la versión insertada, p.
/media/3/header.png
donde el archivo real permanece como /media/header.png
en el servidor.
- Utilice una herramienta como
mod_rewrite
para convertir las URL entrantes en el valor canónico, es decir, una solicitud de /media/3/header.png
se convierte en /media/header.png
. This article describe la función con más detalle.
Sé cómo establecer el futuro lejano expira en las imágenes, pero me preguntaba si hay una mejor manera de manejarlo cuando edito una imagen. Digamos que he header.png con mucho futuro expira. Luego lo edito en photoshop. Tendría que nombrarlo en header1.png y luego cambiar cualquier referencia en el código a header1.png. No es ideal para mi –