查询字符串 - 使用行ID或人类可读的值?

问题描述:

我正在创建一个表单,我想知道在以更人类可读的格式显示值方面是否有显着的优势;例如:查询字符串 - 使用行ID或人类可读的值?

的index.php用户=泰德&位置=纽约

不是:

的index.php用户= 23423 &位置= 34645

一方面,让查询字符串更具可读性,可以让用户和搜索引擎更好地理解wh但是这也会在服务器端创建更多的工作,因为我必须通过除了唯一标识以外的其他东西来追踪关联的行。

例如,首先找到'newyork'的id在能够在需要location_id的其他行上工作之前。我总是倾向于尽可能少的工作。

编辑:决定与可读性。我想我可以随时使用mysql查询缓存来加快速度,如果有必要的话。

+0

你打算选择一个答案吗? ;) – Citizen 2009-11-27 23:29:45

尽可能使用人类可读的值。只要确保清理输入。

编辑:是的,如果您有很多选择,这可以并且仍然应该为SEO目的完成(如果它值得您的话)。即使用户有很多选择,您也应该知道它们是什么(或者限制是什么),以便您可以正确清理输入。例如,如果他们正在选择状态,则可以知道全部50.如果他们只是编写自己的文本,请确保在您的结尾是唯一的文本。

+0

当你有很多价值时,你是否认为这会减慢速度?假设我在查询字符串中有15个值。我可能需要查找这些值中的15个ID(可能不是,但你看到了我所得到的)。这是很大的开销。也许我应该考虑重新设计我的数据库。 – Brad 2009-11-25 17:22:06

+0

如果你有这么多的价值,那么我会考虑使用一个帖子,除非你真的需要他们的网址。 – jeffa00 2009-11-25 17:23:48

+0

一旦你在URL中获得了很多值,它就不是人类可读的任何方式...... – jeffa00 2009-11-25 17:25:01

一个好的经验法则是存储数据的id和显示为人类可读的文本等

取决于你的目标。

如果你正在谈论的博客,你希望每个人都看到everthing(并很容易找到),那么人/搜索引擎可读的格式是一个明智的选择。

如果这些页面被锁定在登录后面,那么它并不重要。你可以做更简单的数据库。

对于大多数互联网应用程序,我会犯错,因为这将有助于搜索引擎。

+0

它是任何人都可以搜索产品的搜索表单的一部分。目前该表格有大约10种不同的搜索选项可供使用,但更多将会在“高级”搜索中添加。 – Brad 2009-11-25 17:27:00

您不应该在任何合理的数据库引擎上担心任何通常大小的应用程序的效率。为用户编写应用程序,而不是查询优化器。 QO可以更轻松地照顾自己。在不太可能发生的情况下处理优化问题。

我将从一个不同的方向来。在我看来,如果希望用户能够通过编辑URL而不是使用UI来使用URL来更改其参数,那么该URL应该是可读的。一个例子是https://www.coolreportingapp.com/accountReport.jsp?account=ABC&month=200911。在这个例子中,用户可以“轻松”更改他们查看的帐户或月份,而不会与UI搞乱。这当然意味着您需要每次验证URL参数,无论如何您都应该这样做。如果您不希望用户更改URL参数,则需要混淆和散列值并使用散列来验证它们没有。

说真的,恕我直言,在你的例子中,没有比其他更可读。普通用户是否知道“&”是"user=ted&location=newyork&"中“变量”的分隔符?他们需要知道存在类似变量的东西吗?考虑到这一点,显示数字或单词有什么区别?

如果你真的想要可读的URL,你应该建立SEO友好的网址(人类可读)。请记住,即使是“dashes vs underscores”最简单的问题也很重要。