1

我想我有一个不寻常的问题。我正在开发一个项目(在 PHP / MySQL 中),用户可以提供一个写成正则表达式的路径,并且该站点将加载一些基于此的内容。比如说,有人提供了这个正则表达式:

articles\/([0-9]+)$

当有人访问http://example.com/articles/3时,它将加载该特定页面及其相关内容和设置。所有这些路径都存储在 MySQL 数据库中。当用户访问该站点时,它会根据正则表达式数据库检查 URL,并找到要显示的适当内容。

这是我的问题:用户可以将任意数量的正则表达式路径与任意数量的其他页面相关联,并且它们可以与任何其他正则表达式非常相似。我的直接想法是根据 URL 的开头(当然是在 example.com/ 之后)缩小搜索范围,并查看所有选项,直到找到完全匹配的内容。不过,我很担心,因为在最坏的情况下,它可能会在找到完全匹配之前查看几十个甚至更多选项……这会浪费宝贵的资源。

有人对我如何改进系统有任何想法吗?

提前致谢。

4

2 回答 2

0

如果该正则表达式匹配号是您的表中的主键,那么性能甚至不应该是一个问题(应该需要几分之一秒),假设您的网站中的文章少于一百万。

还使用缓存来提高性能。

于 2012-06-14T02:49:48.950 回答
0

我唯一的建议是将匹配结果缓存在另一个 mysql 表中。搜索将很快,因为它的索引,然后如果没有找到匹配,通过你的正则表达式并应用它们。删除或更新正则表达式时,请记住删除与该正则表达式关联的缓存。

于 2012-06-14T02:50:11.437 回答