怎么设计一个网站的永久链接

2016-11-21 18:28:05 +08:00
 sys64

如: 百度贴吧:
http://tieba.baidu.com/p/4855169060/
什么值得买:
http://www.smzdm.com/p/6664641/
v2ex:
https://www.v2ex.com/t/322033

这个后面的数字是通过什么规则生成的,还是直接用数据库的自增 id

4100 次点击
所在节点    Python
25 条回复
goofansu
2016-11-21 19:19:15 +08:00
v2 肯定是自增 id
sys64
2016-11-21 20:15:40 +08:00
@goofansu 嗯,应该是。我刚访问了一下
/t/2
/t/3
/t/4
应该是自增 ID ,如果是用数据库自增 id ,那这个 id 是保存到数据库的时候生成的,感觉这样设计不太好吧。不知道还有没有其他的方式生成,可以在保存到数据库之前就能生产一个唯一的链接 id ,但生成的数字 id 也不能太长。
kslr
2016-11-21 20:30:52 +08:00
自增是个非常简单实用的解决方案。当然考虑到隐私保护或者大规模部署也有其解决方案,你可以搜搜 ID 策略。
lissome
2016-11-21 20:54:57 +08:00
自增序列挺好的
lhbc
2016-11-21 21:11:37 +08:00
short uuid
sys64
2016-11-21 21:58:55 +08:00
@kslr @lissome 哦,那这个自增序列,是由保存到数据库的时候,由数据库的自增字段提供的吗?感觉这样的设计有问题,这个永久链接应该是网站 url 逻辑的一部分,不应该由数据库来生成。

@lhbc 看了一下能提供数字的短 id ,但不能保证唯一。应该需要自己写保证唯一的逻辑。
phithon
2016-11-21 22:20:27 +08:00
http://wiki.ioin.in/ 用的 hashids
zhanglintc
2016-11-21 22:35:29 +08:00
@sys64 居然没有 /t/2 这不科学
zhanglintc
2016-11-21 22:36:01 +08:00
@sys64 写错了 居然没有 /t/0 这不科学
rogwan
2016-11-21 22:48:40 +08:00
稍微大一些的数据量,一般不建议用自增吧。不过一般的应用根本到不了自增 ID 是瓶颈的状态 LOL

据说有理想的是 随机数+uuid+时间戳 组合生成 ID ,看着有点长,其它没什么问题
windowsma
2016-11-21 23:25:10 +08:00
@sys64 您这个思维还是很独特的。。。只能说思维比较奇葩。
不过可以自己写个发号器,根据时间、密钥等,生成唯一 uuid 。微博就是这么做的
sys64
2016-11-21 23:29:31 +08:00
@windowsma 哦,请看我贴出的网址的 url ,如 http://tieba.baidu.com/p/4855169060/ 希望是短数字的不重复的。
lhbc
2016-11-21 23:33:56 +08:00
@sys64 自增 id+unix time 不就行了,不重复,无冲突,无法遍历。
sys64
2016-11-21 23:44:49 +08:00
@lhbc 谢谢的回复,不过这么说,那其实 unix timestamp 就是唯一的了,加不加自增 id 就无所谓了。自增 id 如果是数据库提供的话,那必须先查数据库(或由保存到数据库的时候返回的)才能得到。
nfroot
2016-11-22 01:16:35 +08:00
@sys64 unix timestamp 还不至于唯一。精确到毫秒也不至于唯一,但是可以 time()+rnd(time())
misaka19000
2016-11-22 01:54:18 +08:00
如果用的是 MySQL ,那么自增是个非常好的解决方案,如果因为某些原因用不了自增,那用 UUID 也可以
onlyhot
2016-11-22 04:11:47 +08:00
id uid time
Vicer
2016-11-22 08:30:21 +08:00
UUID+unix timestamp
wwek
2016-11-22 08:50:55 +08:00
规则上没有什么标准范式
我觉得豆瓣的设计的就不错

给你一个思路,把 URL 结构看成倒置树状结构
什么地方用文件夹,什么地方用文件你就非常清楚了
另外如果现在还考虑传统 SEO 的话,这个树应该是低而广阔的树,顾名思义就是目录不要深,摊开
wwek
2016-11-22 08:51:50 +08:00
ID
1. 自增
2. 放号器

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/322149

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX