Archi perf : index slug→uuid pour éviter le scan complet à chaque vue article #25
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::getBySlug()appellegetAll()et itère sur tous les articles pour trouver celui dont le slug correspond. Chaque visite d'un article déclenche donc un scan complet du répertoiredata/, indépendamment du nombre d'articles.C'est le chemin le plus emprunté du site (chaque lecture d'article), et il est O(n) en nombre d'articles.
Solution proposée
Fichier d'index
data/_index/slugs.jsonMaintenir un fichier JSON
{ "mon-slug": "uuid-xxx", ... }mis à jour à chaquecreate(),update()etdelete().getByUuid()lit déjà un seul répertoire en O(1) — c'est le comportement cible.Gestion de la cohérence
create(): ajouteslug → uuiddans l'indexupdate(): supprime l'ancien slug, ajoute le nouveaudelete(): supprime l'entréegetAll()+ reconstruction de l'indexImpact
getBySlug)meta.jsonmeta.json+ 1index.mdCritères d'acceptation
getBySlug()utilise l'index et ne scanne plusdata/data/_index/est exclu du rsync de contenuNote
Doit être traité après ou conjointement avec le ticket #35 (ne pas charger le contenu dans
getAll()) pour que le fallback reste bon marché.Migré depuis varlog#36