假设我访问文章
/article/23/the-46-year-old-virgin
/article/id/slug
形式上。
我显然可以使用 id 来获取视图中的数据。
然后我看不出我将 slug 存储在数据库中的原因。
此外,/article/id/slug
不比更好/article/slug
吗?
仅使用 的问题id
在于它会损害 URL 可读性和搜索引擎优化。(有关后者,请参见此处。)
仅使用 的一个问题slug
是它们很长,并且 URL 在现实世界中有时会被截断。如果您id
在开头有,那么您只需将其用于查找并在slug
零件出现问题时重定向。另一个问题是你必须保证你的slugs
永远是独一无二的。你确定你永远不想有两篇标题相同的文章吗?
所以做一个或另一个当然是可能的,但两者都做是有好处的。
至于是否应该将 slug 存储在数据库中,首先要确定是否要在标题更改时更改 URL。保持它不变的一个好处是,您将拥有一个单一的、永久的、规范的资源 URL,如果您需要编辑标题,该 URL 不会改变。明显的缺点是您的 URL 将不再反映文章的确切标题。
如果您总是希望 slug 与标题匹配,那么这将成为一个标准的数据库非规范化问题 - slug 将代表您出于性能原因预先计算的冗余(派生)信息。我自己可能不会打扰。
如果您希望 URL 保持不变,即使标题被编辑,您当然必须单独存储 slug。