1

假设我访问文章

/article/23/the-46-year-old-virgin

/article/id/slug形式上。

我显然可以使用 id 来获取视图中的数据。
然后我看不出我将 slug 存储在数据库中的原因。

此外,/article/id/slug不比更好/article/slug吗?

4

1 回答 1

2

仅使用 的问题id在于它会损害 URL 可读性和搜索引擎优化。(有关后者,请参见此处。)

仅使用 的一个问题slug是它们很长,并且 URL 在现实世界中有时会被截断。如果您id在开头有,那么您只需将其用于查找并在slug零件出现问题时重定向。另一个问题是你必须保证你的slugs永远是独一无二的。你确定你永远不想有两篇标题相同的文章吗?

所以做一个或另一个当然是可能的,但两者都做是有好处的。

至于是否应该将 slug 存储在数据库中,首先要确定是否要在标题更改时更改 URL。保持它不变的一个好处是,您将拥有一个单一的、永久的、规范的资源 URL,如果您需要编辑标题,该 URL 不会改变。明显的缺点是您的 URL 将不再反映文章的确切标题。

如果您总是希望 slug 与标题匹配,那么这将成为一个标准的数据库非规范化问题 - slug 将代表您出于性能原因预先计算的冗余(派生)信息。我自己可能不会打扰。

如果您希望 URL 保持不变,即使标题被编辑,您当然必须单独存储 slug。

于 2013-08-28T13:15:46.870 回答