Skip to content

Cache-Control configurable pour les fichiers media (S3 + db_storage) - #537

Draft
fabienheureux wants to merge 3 commits into
mainfrom
s3-cache-control
Draft

Cache-Control configurable pour les fichiers media (S3 + db_storage)#537
fabienheureux wants to merge 3 commits into
mainfrom
s3-cache-control

Conversation

@fabienheureux

@fabienheureux fabienheureux commented Jul 1, 2026

Copy link
Copy Markdown
Collaborator

🎯 Objectif

Permettre de configurer l'en-tête Cache-Control sur les fichiers media (images, documents) servis via S3 ou le stockage base de données, et ajouter un backfill pour les objets existants.

Jusqu'ici la valeur était hardcodée séparément dans db_storage/views.py (max-age=3600) et absente du côté S3. Les navigateurs refaisaient donc une requête pour chaque image à chaque chargement de page.

🔍 Implémentation

  • Nouveau setting MEDIA_CACHE_CONTROL dans config/settings.py, initialisé depuis la variable d'environnement MEDIA_CACHE_CONTROL avec public, max-age=3600 par défaut
  • S3 : object_parameters[CacheControl] passé à django-storages pour que tous les nouveaux uploads aient le bon header
  • db_storage/views.py : remplacement de la valeur hardcodée par settings.MEDIA_CACHE_CONTROL
  • Nouvelle commande set_s3_cache_control pour backfill les objets S3 existants (--dry-run pour prévisualiser)

⚠️ Informations supplémentaires

Après déploiement, lancer sur les environnements S3 :

python manage.py set_s3_cache_control --dry-run   # prévisualiser
python manage.py set_s3_cache_control              # appliquer

La variable d'environnement S3_CACHE_CONTROL continue de surcharger MEDIA_CACHE_CONTROL spécifiquement pour le bucket S3 si besoin.

Reste à faire

  • ajouter une stack garage locale pour tester le sujet
  • déployer sur une préprod et vérifier que ca fonctionne comme attendu

- Add MEDIA_CACHE_CONTROL constant backed by env var (default: 1h)
- Wire it through S3 object_parameters for new uploads
- Replace hardcoded value in db_storage ServeFileView
- Add set_s3_cache_control backfill command for existing S3 objects
@fabienheureux fabienheureux changed the title feat: Cache-Control configurable pour les fichiers media (S3 + db_storage) Cache-Control configurable pour les fichiers media (S3 + db_storage) Jul 1, 2026
@fabienheureux fabienheureux self-assigned this Jul 1, 2026
@fabienheureux
fabienheureux marked this pull request as draft July 1, 2026 12:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant