15

slug 是描述或标题页面的 URL 的一部分,并且通常为该页面改进 SEO 的关键字丰富。例如,在此 URL PHP/JS - 即时创建缩略图或存储为文件,最后一节“php-js-create-thumbnails-on-the-fly-or-store-as-files”是 slug。

目前,我正在将每个页面的 slug 与数据库中的页面记录一起存储。当页面生成并与页面一起存储时,从 Title 字段生成 slug。但是,我正在考虑动态生成 slug,以防我想更改它。我正在努力找出哪个更好以及其他人做了什么。

到目前为止,我已经为每个人提出了这些优点:

Store slug:-“更快”的处理器不需要每次都生成它(生成一次)

即时生成: - 灵活(可以调整 slug 算法,不需要为整个表重新生成)。- 在 DB 中使用更少的空间 - 从 DB 传输到 App 的数据更少

我还错过了什么,你会怎么做?

编辑:

我只想澄清答案中的误解。slug 对登陆正确的页面没有影响。要理解这一点,只需切断或破坏本网站上的任何部分。例如:

PHP/JS - 即时创建缩略图或存储为文件

PHP/JS - 即时创建缩略图或存储为文件

PHP/JS - 即时创建缩略图或存储为文件

都会将您带到同一页面。slug 永远不会被索引。

你不需要保存旧的蛞蝓。如果您登陆的页面有“旧 slug”,那么您可以检测到该页面,然后执行 301 重定向到正确的“slug”页面。在上面的例子中,如果 Stack Overflow 实现了它,那么当你登陆上面任何带有截断 slug 的链接时,它会将 url 中的 slug 与当前 slug 算法生成的那个进行比较,如果不同,它会执行 301重定向到同一页面,但使用新的 slug。

请记住,所有内部生成的链接都将立即使用新算法,并且只有来自外部指向的链接才会使用旧的 slug。

4

4 回答 4

9

更改现有页面的 slug 不是一个非常糟糕的主意吗?一开始它会破坏你所有的链接。

编辑,按照盖伊在问题中的澄清:你仍然需要考虑旧的蛞蝓。例如:如果您更改 slug 算法,Google 可能会开始看到每个页面的多个版本,并且您可能会遭受重复的内容惩罚,或者最多只能在同一页面的多个版本之间共享 PR 和 SERP。为避免这种情况,您需要任何非规范 slug 重定向到的页面的规范版本 - 因此无论如何您都需要数据库中的规范 slug。

于 2009-04-30T14:29:23.790 回答
5

您可能需要考虑另一件事,如果您希望用户/您自己能够定义自己的 slug,该怎么办。也许算法并不总是足够的。

如果是这样,无论如何您或多或少都需要将其存储在数据库中。

如果不是,我认为这并不重要,您可以即时生成它们,但如果您不确定是否要更改它们或不让它们在数据库中。在我看来,这两种方法都没有真正的性能问题(除非动态生成非常慢或类似的东西)。

选择最灵活的一种。

于 2009-04-30T14:34:14.967 回答
4

对于 slug 生成,我不认为生成时间应该是一个问题,除非您的 slug 算法非常复杂!同样,存储空间也不是问题。

我会将蛞蝓存储在数据库中,原因很简单,蛞蝓通常构成永久链接的一部分,一旦永久链接在野外出现,它应该被认为是不可变的。能够更改已发布数据的 slug 似乎是个坏主意。

于 2009-04-30T14:32:58.900 回答
1

处理 slug 的最佳方法是仅将 slug 的说话部分存储在数据库中,并保留路由部分具有唯一标识符以用于动态生成。否则(如果您将整个 url 或 uri 存储在数据库中),如果您改变了如何调用它们的想法,那么首先重写数据库中的所有 slug 可能会成为一项艰巨的任务。

让我们以这个问题 SO slug 为例:

/questions/807195/should-i-create-a-slug-on-the-fly-or-store-in-db

它的:

/route/unique-ID/the-speaking-part-thats-not-so-important

动态部分显然是:

/route/unique-ID/

我将存储在数据库中的是口语部分:

the-speaking-part-thats-not-so-important

这使您可以始终改变对路由名称的想法并进行正确的重定向,而不必先查看数据库内部,并且您不会被迫进行数据库更改。唯一 ID 始终是您的数据库数据唯一 ID,因此您可以正确识别它,并且您当然知道您的路线是什么。

并且不要忘记设置规范标签。如果你看一下这个页面代码,它就在那里:

<link rel="canonical" href="http://stackoverflow.com/questions/807195/should-i-create-a-slug-on-the-fly-or-store-in-db" />

这允许搜索引擎识别正确的页面链接并在您有重复内容的情况下忽略其他链接。

于 2015-12-21T13:53:31.330 回答