2009-01-12 169 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,時,確定現有的值並在表中追加高於其值的值,然後更新地圖。

相關問題