2009-01-12 14 views
6

Estoy tratando de generar algunos url 'slugs' para mi sitio web. Se basa en una sola pieza de texto generado por el usuario.¿Cuál es la mejor manera de almacenar un URL Slug único?

Ahora, he creado mi propio método slug, así que no busco un código para eso.

Lo que me pregunto es dónde es el mejor lugar para determinar si esta babosa es única y luego insertarla porque el campo slug es un índice de clave única.

Originalmente, tenía un disparador en cualquier inserción (contra la mesa) así que cuando se ingresan los datos, se determina la barra. Tenía una función que verificaba el número de registros que contenían el texto del usuario (no el slug) y luego generaba el slug y agregaba el recuento de registros + 1 al final del nuevo slug.

por ejemplo.

5 registros se encuentran en la tabla con el mismo contenido generado por el usuario. la babosa para esto ahora el slug-text con un 6 añadido al final.

Defectos: si el usuario cambia su texto, la babosa no cambia.

De todos modos, me pregunto si otras personas han tratado este problema con anterioridad y encontraron alguna forma de solucionarlo.

Respuesta

15

Me gusta un poco la forma en que stackoverflow lo hace. Que es poner ambos la identificación y la babosa en la url. Ahora la babosa ya no tiene que ser única. Creo que hulu.com también lo hace de esta manera. Creo que es una solución práctica al problema.

+2

@toby Stackoverflow realmente parece usar la parte slug de la URL solo para propósitos de SEO (quizás haya otras razones que desconozco). Lo digo porque para cualquier pregunta, la URL http://stackoverflow.com/questions/434376/title-of-post y http://stackoverflow.com/questions/434376 y http://stackoverflow.com/questions/434376/total-random-gobblygoo resuelven la ID de la pregunta particular a la que se hace referencia en la URL. – Howiecamp

+0

@Howiecamp, no solo para SEO, posiblemente también para la usabilidad ... – James

2

La mayoría de los sitios no cambian la babosa por la razón de que si un usuario edita su título no debe romper ningún enlace a la publicación que ya se haya realizado.

0

Para la solución de base de datos que ya tiene, si funciona bien puede tener un activador de actualización y actualizar el slug si el contenido cambia, pero debe buscar el rendimiento alcanzado.

Para una solución alternativa, puede usar un mapa [cargado en el inicio que contenga babosas existentes] que contenga la clave como la bala y el conteo existente como valor. Cada vez que genere un slug, determine el valor existente y agregue el valor más alto que en la tabla y luego actualice el mapa.

Cuestiones relacionadas