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