Question

J'essaie de générer des url 'slugs' pour mon site Web. Il est basé sur un seul morceau de texte généré par l'utilisateur.

Maintenant, j'ai créé ma propre méthode slug, je ne cherche donc pas du code pour cela.

Ce que je me demande, c'est quel est le meilleur endroit pour déterminer si ce slug est unique, puis l'insérer, car son champ est un index de clé unique.

À l’origine, j’avais un déclencheur sur n’importe quel insert (par rapport à la table). Ainsi, lorsque les données sont entrées, le slug est alors déterminé. J'avais une fonction qui vérifiait le nombre d'enregistrements contenant le texte de l'utilisateur (pas le slug), puis générait le slug et ajoutait le nombre d'enregistrements + 1 à la fin du nouveau slug.

par exemple.

5 enregistrements se trouvent dans la table avec le même contenu généré par l'utilisateur. le slug pour cela maintenant le slug-text avec un 6 ajouté à la fin.

Défauts: si l’utilisateur modifie son texte, le slug ne change pas.

Quoi qu'il en soit, je me demande si d'autres personnes ont déjà résolu ce problème et ont trouvé des solutions pour le résoudre?

Était-ce utile?

La solution

J'aime bien la façon dont stackoverflow le fait. Ce qui consiste à mettre à la fois l'ID et le slug dans l'URL. Maintenant, la limace ne doit plus être unique. Je crois que hulu.com le fait aussi. Je pense que c'est une solution pratique au problème.

Autres conseils

La plupart des sites ne changent pas le slug, car si un utilisateur modifie son titre, il ne doit pas rompre les liens déjà créés avec le message.

Pour la solution de base de données que vous avez déjà, si cela fonctionne bien, vous pouvez également avoir un déclencheur de mise à jour pour mettre à jour le slug si le contenu change, mais vous devez rechercher l'impact sur les performances.

Pour une solution alternative, vous pouvez utiliser une carte [chargée au démarrage contenant des slugs existants] contenant la clé en tant que slug et un compte existant en tant que valeur. Chaque fois que vous générez un slug, déterminez la valeur existante et ajoutez la valeur supérieure à celle-ci dans la table, puis mettez à jour la carte.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top