2009-06-17 129 views
1

stackoverflow如何管理永久链接。例如一个arbitary QN,如:ASP.NET + jQuery + Dynamically Created HyperLink controls在这种情况下,如果同一用户的帖子标题相同的另一QN会发生什么。我认为之前的数字 -/1002230 /是关键,但是它是以什么为基础创造的。它是一个指标,显示了在堆栈中有多少个问题。固定链接的固定链接是如何工作的?

这无疑是与我有关,因为我试图用一个博客帖子的标题中永久链路它。但是,这不会允许多个博客帖子具有相同的标题。我也不想使用身份证号码。我INFACT使用AppEngine上为这个应用程序,因此生成的密钥是一样的东西“ahVzYW5qaGFjaG9vbGhhLXNhbmRib3hyCwsSBUFjdG9uGFUM”这肯定不是很好。所以关于如何美化我的网址的任何提示 谢谢

回答

2

而不是使用密钥()。STR(),它可能是更好的使用密钥ID或KEY_NAME与Model.get_by_id()或Model.get_by_key_name()。这些都更加用户友好(分别为整数或提供的字符串)。

2

该数字是唯一的问题ID - 他们只增量和不重复使用。当您通过URL检索页面时,服务器会忽略可读的字符串 - 这是为了方便和美观 - 解决您的相同任务。所以每个问题URL都有两个部分 - 机器可读(起始部分和问题ID)和人类可读的 - 之后的过滤问题标题。

随着删除问题排除的号码是在网站上的问题总数。被删除的问题的编号不会被重复使用,因此不可能发生冲突。

+0

我认为这是*帖子的数量*,而不仅仅是问题 – hasen 2009-06-17 06:10:40

0

ID号确实给多少总员额有一些指示。我相信我从播客记得,问题和答案都存储为“帖子”,但评论也可以是帖子。

0

我最喜欢的方法是使用格式为“/ 1234/slug-goes-here”(如StackOverflow)或“/ 1234-slug-goes-here”的URL。有一点聪明,你可以忽略slug的内容,并且仅仅基于ID获取,这意味着即使链接被邮件软件,IRC等截断也可以工作。

另一种方法App Engine明智的做法是使用键名称 - 将slug作为键名,这意味着您可以使用MyModel.get_by_key_name(slug)查看它。这是如何Bloog做到这一点。