2009-01-12 175 views
6

我正在尝试为我的网站生成一些url 'slugs'。它基于一段用户生成的文本。什么是存储唯一URL Slug的最佳方式?

现在,我已经做出了自己的slu method方法,所以我并没有为此编写代码。

我在想什么是确定这个slu is是否是唯一的最佳位置,然后插入它,因为slu field字段是唯一密钥索引。

最初,我有任何插入(对表)的触发器,所以当数据输入时,然后确定slu。。我有一个函数,检查包含用户文本(不是段塞)的记录数,然后生成段塞并将记录数+1加到新段塞的末尾。

例如。

在表格中找到5条记录,使用相同的用户生成内容。 这个现在的slu text文本与6添加到最后。

缺陷:如果用户改变他们的文本,slug不会改变。

无论如何,我想知道如果其他人之前已经知道这个问题,并找到了解决方法吗?

回答

15

我有点像使用stackoverflow的方式。其中这两个 ID和slu into入网址。现在,slu no不再是独一无二的。我相信hulu.com也是这样做的。我认为这是解决这个问题的实际办法。

+2

@toby Stackoverflow实际上似乎只使用seo用途的URL的slug部分(也许还有其他我不知道的原因)。我这样说是因为对于任何给定的问题,URL http://stackoverflow.com/questions/434376/title-of-post和http://stackoverflow.com/questions/434376和http://stackoverflow.com/questions/434376/total-random-gobblygoo全部解析为URL中引用的特定问题ID。 – Howiecamp 2010-04-29 06:00:43

2

大多数网站不会更改slu for,因为如果用户编辑她的标题,它不应该打破任何已经发布的帖子的链接。

0

对于您已经拥有的数据库解决方案,如果它运行良好,您可以使用更新触发器,以便在内容更改时更新slug,但应查找性能影响。

对于另一种解决方案,您可以使用一个映射[启动时加载包含现有的slug],其中包含键作为slug和现有计数作为值。每次生成一个slu,时,确定现有的值并在表中追加高于其值的值,然后更新地图。

相关问题