我正在进行重载的Symfony优化,尝试使用模板缓存,教义缓存等。但是除非我错了,否则这些缓存在dev中被禁用,因此很难评估这些优化的效果。
有没有一种方法可以在开发模式下启用缓存,因此我可以在保留调试栏的同时获得应用程序优化结果?
我正在进行重载的Symfony优化,尝试使用模板缓存,教义缓存等。但是除非我错了,否则这些缓存在dev中被禁用,因此很难评估这些优化的效果。
有没有一种方法可以在开发模式下启用缓存,因此我可以在保留调试栏的同时获得应用程序优化结果?
请注意,您的问题中有一些不正确的假设:
默认情况下,始终会缓存 Twig 。检查文档here。如果出于某种原因需要在开发过程中将其禁用,则只能禁用缓存。但是很有可能,这对您来说不是很好。
在生产环境中未启用默认教义缓存。如果要启用缓存,则需要自己进行操作(通过在config/packages/prod/doctrine.yml
中创建适当的文件,但是首先需要确切验证所需的缓存类型以及如何配置它。检查一些有关教义缓存here的文档。
最后,更改dev
(或任何环境)上的设置,只需在config/packages/[environment_name]
中使用适当的设置创建另一个文件即可。
您config/packages/dev/
内部应该已经有一些。
要为环境创建特定设置,只需添加几个文件即可调整这些设置。
例如您可以在其中加入config/packages/dev/doctrine.yml
(基本的教义缓存配置):
services:
doctrine.result_cache_provider:
class: Symfony\Component\Cache\DoctrineProvider
public: false
arguments:
- '@doctrine.result_cache_pool'
doctrine.system_cache_provider:
class: Symfony\Component\Cache\DoctrineProvider
public: false
arguments:
- '@doctrine.system_cache_pool'
framework:
cache:
pools:
doctrine.result_cache_pool:
adapter: cache.app
doctrine.system_cache_pool:
adapter: cache.system
,
您是否检查了每个部分的配置?例如,在较早的Symfony版本中,可能会在某个位置(取决于您启动项目的Symfony版本,例如位于config/packages/dev/twig.yaml
处)中定义Twig缓存的文件如下:>
twig:
cache: false
通过将其设置为有效的缓存目录,无论运行应用程序的环境如何,都可以启用缓存。
在其他程序包中,可能会有类似的设置。寻找覆盖设置,在config/packages/dev
和config/packages/prod
中查找较新的版本,或者在文件config/services_prod.yaml
和config/services_dev.yaml
中查找较旧的版本。但是,如果不知道您使用的是哪个软件包,很难提供一个普遍的答案。
您可以尝试将应用程序临时切换到prod
环境,然后将config/dev/web_profiler.yaml
复制到config/prod/web_profiler.yaml
。
请记住,这只是临时更改,请勿将其部署到生产中!