固定链接结构/%post_id%/%postname%比/%postname%更快还是更慢?

时间:2016-12-16 作者:Victor

我看到许多文章提到/%postname%/ permalink是搜索引擎优化的最佳选择。但是a呢/%post_id%/%postname% 结构,例如myblog.com/123/the-slug-of-my-blog ?

它似乎不会影响搜索引擎排名(Stack Exchange和许多其他公司都使用这种结构)

  • 您可以使每个permalink都是唯一的,即使使用相同的slug(防止在slug中可怕地附加“-2”)
  • 您甚至可以使用myblog.com/123 作为一个简短的url,或播客中一个简单易懂的url,等等(可能需要一些代码定制来实现这一点)
  • 这种永久链接结构是否存在任何已知的性能问题?

    4 个回复
    SO网友:cjbj

    注意:我们在这里讨论的是permalinks之间的区别/%ID%/%name%/%/name/%. 如果我们比较一下,情况就完全不同了/%ID%/%name%/%/ID/%.

    现在,有两个影响性能的用例:

    One. You have a permalink and WP needs to resolve it in order to serve the page requested.

    这意味着设置WP class. main函数位于代码的底部。初始化后,这涉及调用parse_request. 这将检查此特定页面是否存在重写规则,并检查查询变量的有效性。在这种情况下,我们想知道example.com/123/slug 花费的时间比example.com/slug. 为此,您必须假设需要多处理几个字节的PHP字符串函数对性能有重大影响。

    一旦请求的url被切分为可用的块,操作将移动到parse_query, 在这种情况下,将传递一个查询对象,该对象包含name 或两者兼有nameID (令人困惑的是,在查询对象中调用了IDp). 进行了大量处理,但在查询中没有额外的ID。

    接下来跟随两个挂钩(pre_get_postsposts_selection) 这是插件领域,所以对性能的影响是未知的。

    现在主要的问题来了:使用一个变量还是两个变量查询数据库需要更多的时间?二者都IDname 存储在wp_posts 数据库中的表。因此,要查询的表的大小没有差别。此外,两者都是唯一的,因为在存储帖子时,这是经过检查的(OP的假设是,在url中包含ID将消除-2 in posts是错误的,除非你破解了保存过程)。因此,是否必须查询所有数据库行以获取唯example.com/123/slug四 还是独一无二的name. 提供两者时,性能上的唯一区别是在ID 将检查name 匹配项。这真的微不足道。

    Two. You need to generate a permalink on a page.

    这是由get_permalink 作用对于标准post类型,如果使用%category%. 对于IDname 这只是在这一行代码中搜索和替换的问题:

    $permalink = home_url( str_replace( $rewritecode, $rewritereplace, $permalink ) );
    
    的效率str_replace 取决于传递给它的参数的大小,但由于传递了所有可能的重写参数,而不仅仅是实际使用的一个或两个,因此这不会影响性能。

    对于自定义帖子类型get_permalinkget_post_permalink, 无论如何,这涉及到更多的计算,但本质上归结为相同的搜索和替换。

    SO网友:bikegremlin

    在超慢的共享托管环境中进行了测试,post\\u id/postname选项速度更快。

    我想搜索ID某种程度上是更好的索引-不知道它是如何工作的“引擎盖下”。

    没有注意到在帖子名称之前添加一个数字会对“seo”造成任何惩罚-假设有一些,但没有那么严重,内容仍然具有更大的“权重”。

    我的测试和结论详细描述如下:https://io.bikegremlin.com/6768/permalink-change/

    SO网友:Game Unity

    不应该有任何差别。我建议你使用ID版本,你甚至可以让它更漂亮/%postname%-id=%post_id%.

    SO网友:Pratikb.Simform

    上述permalink没有性能问题,我会说两者都很好。然而,/%postname%/被广泛使用,因为它将帮助您生成更好的搜索结果,而且它也是SEO友好的URL。

    在SEO中获得更好的排名是任何网站的目的。因此,/%postname%/是所有wordpress网站最常用和首选的永久链接结构。

    /%post\\u id%/%postname%也是一个很好的选择,但在大多数情况下,人们会尝试在URL上的站点后只获取帖子名称,以获得更好的搜索引擎优化结果

    相关推荐

    Force pretty permalinks?

    我正在构建一个插件,该插件将用于单个站点,并依赖于add_rewrite_rule 要工作,需要打开永久链接。打开它们并不困难,因为它只是一个站点,但我担心其中一个管理员可能会在不知道自己在做什么的情况下关闭它,并破坏该站点。如何以编程方式强制保持漂亮的永久链接?