Php 基于URL字符串获取所有页面数据是否有效

Php 基于URL字符串获取所有页面数据是否有效,php,performance,url,web,Php,Performance,Url,Web,我见过很多网站,当打开任何页面时,URL中没有任何数字Id或类似的东西,只有单词之间带有连字符(-)的URL字符串。这意味着页面正在根据数据库中的字符串检索数据。有些网址很长。这意味着数据库中该字段上可能没有任何索引(因为它太长了)。那么,这是一种有效的方法吗?如果不是的话,为什么这么多站点使用这种方法?它不是低效的,因为框架的路由系统将大部分搜索工作都从中解脱出来。例如,products/en-gb/mens/shirts/浅蓝色全袖斜纹衬衫可以细分为产品类别,然后是en-gb,然后是男士和衬

我见过很多网站,当打开任何页面时,URL中没有任何数字Id或类似的东西,只有单词之间带有连字符(-)的URL字符串。这意味着页面正在根据数据库中的字符串检索数据。有些网址很长。这意味着数据库中该字段上可能没有任何索引(因为它太长了)。那么,这是一种有效的方法吗?如果不是的话,为什么这么多站点使用这种方法?

它不是低效的,因为框架的路由系统将大部分搜索工作都从中解脱出来。例如,
products/en-gb/mens/shirts/浅蓝色全袖斜纹衬衫
可以细分为产品类别,然后是en-gb,然后是男士和衬衫,这些类别将相互链接,并且产品链接到衬衫类别,因此您不必搜索整个数据库,但在任何情况下都是它的一个子集

除非站点上有数百万个页面和类别,否则数据库可以很容易地在你眨眼之前搜索几千条记录。

有些站点,比如这一个(stackoverflow)使用混合方法,既有数字索引也有url的字符串规范标题。与此同一页面的url类似:

stackoverflow.com/questions/15221783/is-it-efficient-way-to-get-all-the-page-data-on-the-base-of-url-string
//          Numeric index -----^                ^-------- canonical title

通过这种方式,您可以两全其美,快速的数字索引和语义seo友好的规范字符串标题。

这是非常有效的,因为您只能索引字符串的前15个字符。 然而,这种方法通常是错误的,因为唯一的页面应该由唯一的url寻址,而页面标题可以编辑

如果您编辑问题标题,旧的url将使您回到正确的页面。
对于您描述的系统,如果标题已编辑,则无法返回。
所以,一个好的站点永远不会使用它,但是,像stackoerflow一样,它会同时使用唯一索引和slug