3

我有一个包含 240 万个条目的数据库的网站。现在我想使用 mod_rewrite 生成清晰的 URL,例如 example.com/this-is-a-beautiful-url。为了识别哪个 URL 属于哪个页面,我想构建一个指向网站内容的 URL 表。像“this-url-example”属于 ID 123 的帖子。现在 2 位朋友告诉我 2 种不同的方法来构建此表,我不知道哪种方法最好。

  1. 建议:“制作 URL 的 MD5 散列并将它们保存在带有索引的二进制字段中”。
  2. 建议:“只需将网址保存为纯文本并在其上放置索引”。

哪种方法可以提供更快的选择查询?你还有什么建议吗?谢谢!

4

3 回答 3

2

寻求妥协,将网址设置为 sitename.com/12345/clean-url-format

您在可读的 URL 中有两个关键字,并且可以使用它们来通过主键获取行以加快速度。

将没有文本部分的 url 重定向到带有它的规范版本是合理的。

于 2012-10-14T21:40:21.950 回答
2

MD5 Hash 是为数据比较而设计的。即检查密码是否有效或文件是否保持不变。

如果您计划能够更改和修改 URL(出于搜索引擎优化目的),我会坚持使用纯文本。

此外,如果您想创建 Mod 重写命令(在您的 HTACCESS 中)文件 - 它需要是纯文本以使您能够将该 URL 链接到特定页面。

于 2012-10-14T21:53:20.833 回答
0

我不会使用 mysql 或 md5 散列。相反,请使用键值存储,例如dbmleveldb。如果您使用的是 Apache mod_rewrite,它有一个特性,即RewriteMap,可以直接从 dbm 数据库中读取键和值,或者通过调用外部程序。类型可以是sdbm、或( Berkeley DBgdbm ) ,并且 apache 包含一个程序httxt2dbm来创建数据库。如果您确实想使用 MySQL,RewriteMap 也可以使用 dbd 选项和mod_dbd来做到这一点。在性能方面,在 MySQL 上使用哈希索引应该类似于 Berkley DB。ndbmdb

于 2015-01-29T20:25:06.713 回答