Contributed by
Frank de Jonge
in #21755 and #21926.
Symfony的 Routing组件 是每一个Symfony程序中最为重要的部分。首先,它用于生成你模板中的链接 (即 "URL generator" 部分) ,其次,针对任何给定的请求,由它来决定执行哪些代码 (即 "URL matcher" 部分)。
而且,它必须快速爆发以避免影响到程序性能。在URL被生成或匹配时,毋须每一次都去检查程序中的所有路由,本组件仅解析一次配置信息,即可剥离出两个巨大的PHP文件,对URL生成或匹配进行了优化。在程序的缓存中你可以找到名为 *UrlGenerator.php
和 *UrlMatcher.php
的这两个文件。
一直以来,就算这些文件被无微不至地优化过,仍然有改进空间。在Symfony 3.3中我们添加了许多细微优化,以剥离出更好的文件,令程序在执行过程中更少地调用函数。
实践中,当程序拥有巨量路由时将明显感受到这种变化。例如,在900个路由的例程中,URL匹配进程从7.5毫秒降至2.5毫秒。 在小型程序中,你只能看到微小差别,但每一个微秒的减少皆令你的程序变快!
如果好奇,你可以查看 PR 21755 和 PR 21926 以了解上述改变的完整细节。同时查看 这篇博文,作者Frank解释了他是如何完成的。