正则表达式网站路径


Regex website path

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

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

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

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

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

提前谢谢。

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

还可以使用缓存来提高性能。

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