logo oujood
🔍

Le système de cache Django

Optimisez les performances de votre site en évitant les calculs et requêtes inutiles.

OUJOOD.COM

La rapidité d'un site est un facteur déterminant pour l'expérience utilisateur et le référencement. À chaque fois qu'un visiteur demande une page, Django doit interroger la base de données et générer le HTML. Si votre site reçoit beaucoup de trafic, cela peut saturer votre serveur. Le cache permet de mémoriser le résultat d'une opération coûteuse pour le resservir instantanément la fois suivante.

Pourquoi mettre en cache ?

L'idée est simple : ne faites pas deux fois le même travail. Si vous avez une liste de produits qui ne change qu'une fois par jour, il est inutile de demander à la base de données de la reconstruire à chaque seconde. En stockant cette liste dans le cache, vous divisez le temps de réponse par dix, voire par cent.

Les différents types de cache

Django est très souple et peut stocker ses données à plusieurs endroits selon vos besoins :

  • Memcached ou Redis : Les solutions les plus rapides, utilisant la mémoire vive (RAM).
  • Base de données : Pratique si vous n'avez pas accès à un serveur de cache dédié.
  • Système de fichiers : Stocke les données dans des fichiers locaux sur le serveur.
  • Mémoire locale : Uniquement pour le développement (le cache disparaît au redémarrage du serveur).

Configuration de base

Tout se passe dans le fichier settings.py. Voici comment configurer un cache simple utilisant le système de fichiers, ce qui est un bon point de départ pour tester l'efficacité sur votre propre projet.

  📋 Copier le code

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
        'LOCATION': '/var/tmp/django_cache',
    }
}

Mettre en cache une vue entière

C'est la méthode la plus radicale et la plus simple. En ajoutant un décorateur à votre vue, vous dites à Django de garder la page entière en mémoire pendant une durée déterminée (en secondes).

  📋 Copier le code

from django.views.decorators.cache import cache_page

@cache_page(60 * 15) # La page est gardée 15 minutes
def ma_vue_lente(request):
    # Calculs longs ou requêtes lourdes ici
    return render(request, 'ma_page.html')

Le cache est un outil formidable, mais attention à l'invalidité des données : si vous mettez en cache une page de profil et que l'utilisateur change son nom, il ne verra pas la modification immédiatement. Il faut savoir doser.

Après avoir optimisé la vitesse, nous allons voir comment communiquer directement avec vos utilisateurs par un autre canal : l'envoi d'emails avec Django.

Par carabde | Mis à jour le 08/05/2026