Envoyé par
nihaoma
- On stocke tous les title/meta dans le BDD, on requête une première fois et on enregistre les infos en json dans un fichier cache nommé par exemple avec le md5 de l'URL. On aura donc autant de petits fichiers cache que d'URL et il suffit de supprimer le bon en cas de modification des title/meta. J'ai retenu cette solution qui me semble être la moins gourmande.
Il faut le faire à la demande, c'est-à-dire au fur et à mesure des chargements de pages, autrement ça ne tient pas la charge.
Envoyé par
nihaoma
2 : Il faut être capable dans ses pages de générer la bonne URLs rewritée pour chacun de ses liens dynamiques.
C'est là que le bloque un peu, je ne trouve pas de solution intelligente qui ne me flood pas ma BDD. En effet, imaginez que vous affichiez un catalogue de 50 items. Le code du catalogue va vous donner les 50 IDs de ces item et il faut "trouver" l'URL rewritée pour chacun. Soit il faut requêté dans la table "url" à partir de l'ID pour trouver l'URL, soit il faut requete sur chaque item pour connaitre son "nom" et générer à la volé l'URL rewritée (si les URL des item sont basées sur leur nom). Dans tous les cas ca fait 50 requetes à faire sur la base... inadmissible en ce qui me concerne.
Comme jreaux62, une seule requête devrait pouvoir ramener les 50 items. S'il s'agit des 50 produits d'une catégorie alors une requête en "... WHERE CATEGORY_ID = 123" ramène les produits. S'il s'agit de 50 produits décidés arbitrairement, alors il faudra une requête moche "... WHERE PRODUIT_ID IN (2, 5, 34, 45, ...)". Pas de risque de saturation de la DB avec une requête ramenant 50 lignes surtout si vous mettez le résultat HTML en cache ?
La réécriture d'URL ne change rien. URL originelle :
/index.php?2013/05/my-article
URL réécrite : On enlève juste : Si l'URL est construite selon une hiérarchie de données stockées en base, alors elle ne devrait pas elle-même être stockée en base. Elle serait en effet une redondance. Les redondances doivent être stockées dans le cache.
Envoyé par
nihaoma
(vous l'aurez compris, ma priorité est de faire le moins de requêtes possible en base. Grace à des systèmes de caches perso, la plupart de mes pages ne font aucune requête, et j'aimerai que ca continue
)
J'ai eu une problématique similaire issue de motivations similaires.
Le plus gros du travail est sur la mise à jour du cache.
Partager