网站使用url的疑惑

现在网站系统都支持路由,所以链接地址写的也是多种多样,所以我现在不解为什么这么写,这么写有什么好处呢?

  • http://stackoverflow.com/users/313758/yi-jiang
    这个例子中,313758很可能是这个用户的UID,为什么在已经找到唯一身份的情况下,还在末尾写上yi-jiang的用户名呢?完全可以这么简写嘛:http://stackoverflow.com/users/313758


这么写肯定有什么优点,请知晓的给小弟讲讲,万分感谢。

阅读 5.6k
8 个回答

一边猜测一边验证。

1.313758是用户标识还是分组标识?
访问http://stackoverflow.com/users/313758, 会自动跳转到http://stackoverflow.com/users/313758/yi-jiang,
所以数字313758就是用户标识,不是分组.

2.关于后面的名字yi-jiang,是多此一举还是SEO?
用Google搜索关键字“yi-jiang”和"Yi Jiang",都在第二页出现了http://stackoverflow.com/users/313758/yi-jiang
所以后面的关键字,对SEO有一定作用。

3.个人猜测是为了RESTful
RESTful URL有非常高的可读性.
日期也好,英文词组也好,方便人浏览,通过URL了解内容。
用过wordpress都知道,wp支持各种风格的RESTful URL,目的就是这个。

所以,
http://stackoverflow.com/users/313758/yi-jiang是用户名称的RESTful URL;
http://www.cnblogs.com/_franky/archive/2012/07/05/2577141.html是时间格式的RESTful URL。

实名反对以上所有答案。

为了所谓SEO来更改url,甚至查询结构,是非常得不偿失的。现代搜索引擎算法不是十年前的字母url比数字友好了,即使有那么一丁点作用,也是可以忽略。

为了分段查询而更改url,也是扯淡。id查询已经是极致了,再以用户名hash什么的来分库分表简直脱裤子放屁,直接id求余或id段分表不是很方便而且逻辑简单吗?

为了树状缓存而更改url,我都不知道说你什么好,现在很多服务器都是固态了,文件合并都没意义,更何况靠增加目录级别来快速命中呢。即使是机械硬盘,单目录和多级目录索引速度也并没有明显区别。

总而言之,你们的答案在10年前是比较受用的。但是请看清现在是2015年。不要来荼毒菜鸟,谢谢。

---更新---

@我有切糕 的答案估计是靠谱的,Wordpress自带的,为了seo和可视性。

这是一个框架的坑,多数的框架生成静态,默认携带时间,因此不修改就会携带时间

不太清楚别人的的实现,我说下我的理解。

313758未必是ID,可能是一个分组,这个分组下有一组用户,这样就可以先找到分组,再找用户。多了一级可以干很多事情,例如负载均衡:把用户按组分开,收到请求时按组来分配请求。

后面那个按日期分的很可能也是这样。所有用户在同一天提交的文章是存放在一起的,ID是分开的,这样就比较容易组织,也解决了目录过多的问题。当然另外一个好处就是这样组织在我们用户看起来也比较清晰。

自己的理解,未必正确。

你的第二个例子自己给的解释正好是第一个的答案

 url = '/u/uid/nealnote'
 url = '/u/uid'

seo来说,带nickname的比纯数字好,当然,你已经知道了。

第二个例子,归档,日期在url里可以说明一些问题,比如什么时候的文章,直接再url里就有
再有
数据量小的时候怎么做都可以,数据量大的时候要考虑的东西就多了,

比如,你的网站有100 million文章

  url = '/article/id'

当网站访问量大的时候,每次都访问数据库就算有索引速度依然会慢,除了服务器不停的扩张性能,还有其他方法么,提升性能的方法有3种

  1. 缓存

  2. 缓存

  3. 缓存

生成静态文件缓存或者nginx缓存,或者其他各种地方缓存。
假设你的article handler 在接受到id的时候,去硬盘上查找已经生成的缓存文件

/path/to/cache/file/

如果这个文件存在直接读取文件,而不读数据库,不存在的时候才读取数据库,然后顺便生成缓存,假设你在一个目录生成了100 million 的缓存文件(其实不可能,因为单目录文件数有上限),你这缓存还不如不缓存了,硬盘io,文件查找就会使这个性能很低,简单的方法是什么,分目录,分很多级目录,另外也避开单目录文件数限制。
那么这个分目录的方法是什么,发布日期是一种,直接拿id分组也是一种,看个人喜好,大一点的资讯网站一般都是发布日期

/year/month/day/

按年月日区分的好处是,在大部分条件下容易定位到文件

第一个链接我打不开,后面你认为多此一举的东西有可能是传参。

第二个链接如果没有猜错的话,是WordPress博客系统的一个链接形式,你还可以改各种形式呢,不过这条链接确实不利于SEO,但只是相对的,毕竟WordPress可以设置,喜欢用哪种就用哪种。没有什么优劣好坏问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进