Saturation du répertoire du cache : Les fichiers de cache occupent trop d'espace disque

Problème

Avec le pilote de cache File, le répertoire /storage/framework/cache/data/ grossit chaque jour et finit par occuper plusieurs gigaoctets (jusqu'à plusieurs dizaines de gigaoctets sur les sites très fréquentés), saturant l'espace disque de l'hébergement.

Cause

Avec le pilote File, chaque élément mis en cache est un fichier. Lorsque des données sont modifiées, les éléments en cache concernés deviennent obsolètes et sont remplacés par de nouveaux fichiers. Deux choses faisaient s'accumuler les fichiers obsolètes :

  • Jusqu'à LaraClassifier v19.1.3 et JobClass v19.1.3, chaque visite d'une annonce (pour mettre à jour le compteur de vues) et chaque connexion d'un utilisateur renouvelaient une grande partie du cache, et les fichiers obsolètes n'étaient supprimés qu'une fois expirés. Sur un site fréquenté, cela représente plusieurs gigaoctets de nouveaux fichiers par jour.
  • Les fichiers expirés sont supprimés par la tâche quotidienne de purge du cache du planificateur. Si la tâche Cron n'est pas configurée, cette tâche ne s'exécute jamais et les fichiers expirés ne sont jamais supprimés.

Depuis LaraClassifier v19.1.4 et JobClass v19.1.4, les visites et les connexions ne renouvellent plus le cache, et les fichiers obsolètes sont supprimés dès que les données en cache changent. La tâche Cron reste nécessaire pour supprimer les fichiers expirés.

Depuis LaraClassifier v19.1.5 et JobClass v19.1.5, les pages d'annonces et les recherches stockent beaucoup moins de données en cache, et les fichiers expirés sont aussi supprimés sans tâche Cron : lorsque le nettoyage quotidien ne s'est pas exécuté depuis plus d'un jour, de courts nettoyages (environ 1 seconde chacun, après l'envoi de la page au visiteur) s'exécutent après certaines visites. Un avertissement s'affiche également dans Panneau d'administration → Paramètres → Optimization lorsque la tâche Cron ne semble pas s'exécuter. La tâche Cron reste recommandée : les autres tâches planifiées (purge des annonces, alertes de recherche, sauvegardes, etc.) en ont besoin.

Solution

  1. Mettez à jour votre site vers LaraClassifier v19.1.5 / JobClass v19.1.5 ou une version ultérieure.
  2. Videz le cache pour récupérer l'espace disque : Panneau d'administration → System Info → Clear Cache, ou en SSH, depuis le dossier racine du site :
    php artisan cache:clear
    C'est sans risque : le cache est reconstruit automatiquement au fil des visites. Si le répertoire est vraiment énorme et que la commande expire, supprimez le contenu de /storage/framework/cache/data/ par FTP ou SSH (conservez le dossier data lui-même) :
    find storage/framework/cache/data -mindepth 1 -delete
  3. Configurez la tâche Cron, afin que les fichiers de cache expirés soient supprimés chaque jour : voir Configuration de la tâche Cron. Vérifiez ensuite qu'elle fonctionne : en SSH, php artisan schedule:list affiche les tâches planifiées, et php artisan expired-cache:purge lance immédiatement la purge du cache et indique ce qui a été supprimé.

Pour vérifier la taille du répertoire du cache en SSH :

du -sh storage/framework/cache/data

Recommandations

  • Si Redis est disponible sur votre serveur, sélectionnez le pilote Redis dans Panneau d'administration → Paramètres → Optimization → Data Caching System : il est plus rapide, n'utilise pas d'espace disque et gère lui-même l'expiration du cache.
  • Avec le pilote File, ne définissez pas un Cache Expiration Time trop long (même page de paramètres) : plus l'expiration est longue, plus il y a de fichiers conservés sur le disque. Entre 3600 (1 heure) et 86400 (24 heures) secondes est une bonne plage pour la plupart des sites.
  • N'exécutez pas la tâche Cron en tant que root : le serveur web ne pourrait pas supprimer ensuite les fichiers de cache qu'elle crée.

REMARQUE : Les fichiers de sessions sont stockés dans un autre répertoire (/storage/framework/sessions/). Si c'est ce répertoire qui grossit, voir Saturation du répertoire des sessions.

Cet article vous a-t-il été utile ?

Merci pour votre retour !

Besoin d'aide ? Créez un ticket de support

Créer un Ticket

Problèmes courants

oct. 06, 2026