OPcache est le cache de bytecode intégré à PHP : il conserve en mémoire partagée le résultat de la compilation de chaque fichier PHP, pour ne plus jamais recompiler un code qui n'a pas changé. Activé partout en production, il est pourtant souvent laissé sur ses valeurs par défaut — calibrées pour des applications bien plus petites que ce qu'on déploie aujourd'hui.
Compiler Une Seule Fois
Sans OPcache, chaque requête relit et recompile tous les fichiers PHP qu'elle traverse. Avec lui, la compilation n'a lieu qu'une fois, son résultat étant partagé entre tous les workers. Dans un conteneur immuable, on peut aller plus loin : validate_timestamps = 0 supprime même la vérification de fraîcheur des fichiers — le déploiement remplace le conteneur entier, cache compris.
L'Éviction Silencieuse
Trop petit — en mémoire ou en nombre de fichiers (max_accelerated_files) — OPcache évince en boucle : chaque fichier mis en cache en expulse un autre, recompilé à la requête suivante. Une application Symfony moderne dépasse facilement 10 000 fichiers, au-delà du défaut. Rien ne signale cette dégradation, sinon les compteurs d'éviction du cache lui-même.
Un OPcache bien dimensionné est invisible ; un OPcache trop petit aussi — à la différence qu'il dégrade chaque requête. Le vérifier prend une minute et se fait sur des chiffres, pas des intuitions.