IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Gestion des URLs dynamiques


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 39
    Points : 25
    Points
    25
    Par défaut Gestion des URLs dynamiques
    Bonjour à tous,
    J'écris ceci car je suis en train de poser les bases d'un mini framework perso et j'ai un dilem concernant la gestion des URLs.
    Quand on veut faire un moteur de gestion d'URLs, il y à 2 aspects:
    1 : Il faut être capable à partir d'une URLs rewritée d'afficher la bonne page dynamique ainsi que le title et metas. Pour cette partie, une fois la page trouvée grâce à une règle de rewrite dans le .htaccess, la remontée du title et de la meta peut se faire de 3 manières différentes (en tous cas j'ai pas d'autre idée) pour du contenu dynamique:
    - On stocke tous les title/meta dans un fichier indexé par l'url et on lit ce fichier à chaque hit. Un peu trop lourd à mon gout quand on gère un site avec plusieurs milliers d'URL.
    - On stocke tous les title/meta dans la BDD et on fait une requête à chaque hit. Je gère un site de ventes aux enchères et la BDD est très très sollicitée en fin de vente, je préfère éviter d'ajouter une requête systématique.
    - 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.

    2 : Il faut être capable dans ses pages de généré 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.

    Je veux bien connaitre vos avis sur cette question pour répondre à cette problématique de la facon la plus optimisée possible (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 )

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 104
    Points : 4 454
    Points
    4 454
    Par défaut
    Citation Envoyé par nihaoma Voir le message
    - 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.
    Ce choix ... pourquoi pas mais utiliser du json c'est un format d'échange entre langages, et toi tu es exclusivement en php, puisque le but est la rapidité pourquoi ne pas utiliser du php ?

    Citation Envoyé par nihaoma Voir le message
    2 : Il faut être capable dans ses pages de généré la bonne URLs rewritée pour chacun de ses liens dynamiques.
    Mais si tu ne donnes pas TA règle, je ne vois pas quoi répondre
    /dossier/page/id ?
    /controlleur/action/param/ ?
    /slug/produit ?

    ----------
    tu veux afficher 50 produits, cela ce fait avec une requete sql, c'est quoi ce 50 ? meme 5000 items il faut qu'une seule requete
    $moi= ( !== ) ? : ;

  3. #3
    Invité
    Invité(e)
    Par défaut
    2 : Il faut être capable dans ses pages de généré la bonne URLs rewritée pour chacun de ses liens dynamiques.

    ...En effet, imaginez que vous affichiez un catalogue de 50 items.
    Comme le dit papajoker, 1 seule requête suffit à afficher les 50 items.

    Pour écrire les liens :
    (si on prend l'exemple de Prestashop ou autre) les URL simplifiées sont générées et enregistrées en base de données DANS la fiche produit.
    Ce n'est donc qu'un champ de plus à requêter et à afficher. Nul besoin de requête supplémentaire.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="<?php echo $row['url_simplifiee']; ?>"><?php echo $row['titre_produit']; ?></a>

  4. #4
    Membre éclairé
    Avatar de Paleo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2013
    Messages : 242
    Points : 661
    Points
    661
    Par défaut
    Citation Envoyé par nihaoma Voir le message
    - 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.

    Citation Envoyé par nihaoma Voir le message
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /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.

    Citation Envoyé par nihaoma Voir le message
    (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.

Discussions similaires

  1. Gestion des URL en HMVC
    Par FMaz dans le forum Design Patterns
    Réponses: 0
    Dernier message: 01/09/2010, 05h38
  2. [Gestion des urls] Mauvais controller
    Par Spiff__ dans le forum Zend Framework
    Réponses: 7
    Dernier message: 03/10/2008, 00h16
  3. gestion des evenements dynamique
    Par moniteur41 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/09/2007, 21h22
  4. Problème avec la "Gestion des bibliothèques dynamiques"
    Par GoustiFruit dans le forum Delphi
    Réponses: 15
    Dernier message: 31/05/2006, 09h54
  5. Question pas difficile sur la gestion des listes dynamiques
    Par mulbek dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/04/2006, 13h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo