Perf : mettre en cache la liste des articles (getAll) #16
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problème
ArticleManager::getAll()parcourt le système de fichiers à chaque requête :scandir()+ lecture de chaquemeta.json+json_decode()pour tous les articles. Cette fonction est appelée plusieurs fois par requête (liste,getBySlug(),uniqueSlug()), ce qui multiplie les lectures disque inutiles et deviendra un vrai goulot au-delà de quelques dizaines d'articles.Localisation
src/ArticleManager.php—getAll()(ligne 15),getBySlug()(ligne 47),uniqueSlug()(ligne 296)Solution proposée
Cache fichier JSON
Générer un fichier
data/_cache/articles.jsoncontenant le tableau des métadonnées de tous les articles (sans le contenu Markdown). Ce cache est :create(),update(),delete()getAll()en lieu et place du scan completBénéfice secondaire
getBySlug()etuniqueSlug()héritent automatiquement du cache viagetAll().Critères d'acceptation
getAll()lit le cache si disponible et validecreate,update,delete)data/_cache/est exclu du rsync de contenu (push-data.sh)Migré depuis varlog#26