编辑控制器时如何防止symfony 3重建路由

时间:2019-02-21 18:14:39

标签: php symfony caching routing

我正在控制器中工作,我更改的代码必须留在这里。路由在控制器中定义为注释。

因此,也许不是原因,但是每当我对代码进行更改并刷新页面时,第一次刷新就非常慢(该项目很大,有很多控制器)。 第一次刷新后,接下来的很快。因此,我猜想symfony检测到控制器已更改并重建了路由器缓存。

这很痛苦。

如何暂时禁用重新扫描整个项目的路线?

1 个答案:

答案 0 :(得分:1)

dev环境中的重大延迟是由容器重建引起的。这实际上是Symfony开发人员的一个很好的决定,因为它使您可以专注于开发本身,而不必浪费时间尝试寻找由代码和容器内容之间隐藏的不兼容性实际上导致的神秘错误。

避免自动重建容器的最简单方法是切换到prod环境,Symfony希望您自己关心容器。但是,在这种情况下,您还将失去Symfony在dev环境中提供的许多其他便捷工具。

还有更难的选择。看一下Kernel::initializeContainer()方法,它负责容器的初始化。从代码中可以看到-Symfony检查容器是否新鲜。通过加载驻留在容器中的.meta文件并检查其中列出的所有文件是否与构建容器时的文件相同来完成此操作。由于此方法完全是内部方法,因此无法进行简单的修改,但是您可以将其复制/粘贴到应用程序的容器中,然后进行修改以满足您的需要。当然,您需要了解,这种方法不能被视为推荐的方法,而且Symfony开发人员不太可能支持这种方法,因此您必须接受可能的后果,但是仍然可以实现。