0Pricing
PHP Academy · Leçon

Stratégies d’invalidation du cache

Appliquer les stratégies cache-aside, écriture immédiate et invalidation fondée sur TTL.

Stratégies d’invalidation du cache est une leçon PHP Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage PHP Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours PHP Academy comprend 4 leçons au total.

Le problème difficile

« Il n’y a que deux choses difficiles en informatique : l’invalidation du cache et le choix des noms. » — Phil Karlton. Il est essentiel de savoir quand et comment invalider les données mises en cache.

Expiration fondée sur le TTL (passive)

La stratégie la plus simple consiste à définir un TTL et à accepter que le cache puisse fournir des données obsolètes pendant cette durée au maximum. Elle convient lorsque quelques données légèrement obsolètes sont acceptables.

<?php
Cache::put("user:1", $user, 300); // expires in 5 minutes automatically

Invalidation par écriture immédiate

Lorsque vous mettez des données à jour, supprimez ou actualisez immédiatement la clé de cache correspondante.

<?php
function updateUser(int $id, array $data): void {
    User::find($id)->update($data);
    Cache::forget("user:$id");         // delete cache
    // Or re-warm:
    Cache::put("user:$id", User::find($id), 300);
}

Étiquetage du cache

Étiquetez les entrées de cache associées afin de pouvoir invalider tout un groupe en une seule fois — par exemple, toutes les entrées de cache d’un utilisateur donné.

<?php
// Store with tags:
Cache::tags(["user:1", "posts"])->put("user:1:recent-posts", $posts, 600);

// Invalidate all "user:1" entries:
Cache::tags("user:1")->flush();

Invalidation pilotée par les événements

Dans Laravel, utilisez les événements des modèles Eloquent pour invalider automatiquement le cache lorsqu’un modèle est enregistré ou supprimé.

<?php
class User extends Model {
    protected static function booted(): void {
        static::saved(fn($u) => Cache::forget("user:{$u->id}"));
        static::deleted(fn($u) => Cache::forget("user:{$u->id}"));
    }
}

Modèle cache-aside avec gestion des versions

Ajoutez un numéro de version aux clés de cache. L’incrémentation de cette version invalide efficacement toutes les entrées existantes sans les supprimer.

<?php
$v   = Cache::get("user:version", 1);
$key = "user:{$id}:v{$v}";
// To invalidate: increment the version
Cache::increment("user:version");

Expiration anticipée probabiliste (PER)

Pour éviter les ruées vers le cache, recalculez le cache légèrement avant son expiration pour une partie des requêtes. Cela évite une expiration simultanée sur tous les serveurs.

Actualisation en arrière-plan

Une tâche en arrière-plan recharge les entrées de cache fréquemment consultées avant leur expiration. Le cache n’est jamais vide : les lectures restent toujours rapides.

Servir les données obsolètes pendant la revalidation

Fournissez immédiatement les données obsolètes tout en actualisant le cache de manière asynchrone en arrière-plan. Cela élimine les pics de latence dus aux absences du cache.

Invalidation distribuée du cache

Dans une configuration comportant plusieurs serveurs, l’invalidation d’une clé de cache par un serveur n’efface pas automatiquement les caches locaux des autres serveurs. Utilisez la publication/abonnement Redis ou un magasin partagé pour diffuser les invalidations.

Hiérarchie des caches

Superposez les caches : placez un cache local au processus (APCu) devant un cache distribué (Redis). Le cache local est plus rapide, mais doit être invalidé sur toutes les instances lorsque les données changent.

Résumé

Modèles courants : expiration par TTL (simple), suppression par écriture immédiate (précise), étiquetage (groupé) et approche pilotée par les événements (automatique). Choisissez en fonction du niveau de fraîcheur des données requis et de la simplicité souhaitée.

Vérification rapide

Que fait Cache::tags()->flush() ?

Questions Fréquemment Posées

La leçon « Stratégies d’invalidation du cache » est-elle gratuite ?

Oui — le texte complet de « Stratégies d’invalidation du cache » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours PHP Academy, passe à CoddyKit PRO. Le cours PHP Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Stratégies d’invalidation du cache » ?

Appliquer les stratégies cache-aside, écriture immédiate et invalidation fondée sur TTL. Tu pratiques PHP Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer PHP Academy ?

Aucune expérience préalable n'est requise. PHP Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Stratégies d’invalidation du cache » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon PHP Academy ?

Oui. Chaque leçon PHP Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Pourquoi la mise en cache est importante en PHP
  2. Redis comme système de mise en cache PHP
  3. Memcached pour la mise en cache des sessions et des objets
  4. Stratégies d’invalidation du cache
← Retour à PHP Academy