如何在开发模式下启用缓存?

How to enable cache in dev mode?

我正在进行重负载 Symfony 优化,尝试模板缓存、学说缓存等。但除非我错了,否则这些缓存在开发中被禁用,因此很难评估这些缓存的效果优化。

有没有办法在开发模式下启用缓存,这样我就可以在保持调试栏的同时获得应用程序优化结果?

您检查过每个部分的配置了吗?例如,在较早的 Symfony 版本中,某处可能有一个文件(取决于您启动项目时使用的 Symfony 版本,例如它可能位于 config/packages/dev/twig.yaml),它定义 Twig 缓存如下:

twig:
    cache: false

通过将此设置为有效的缓存目录,您可以启用缓存,而不管环境如何 运行 您的应用程序。

在其他包中,可能有类似的设置。查看覆盖设置,在 config/packages/devconfig/packages/prod 中查找较新的版本,或者在 config/services_prod.yamlconfig/services_dev.yaml 中查找较旧版本的文件。但是,如果不知道您使用的是哪些软件包,就很难提供一个笼统的答案。

请注意,您的问题中有几个假设是不正确的:

  • 默认情况下,Twig 总是 缓存。检查文档 here。您只能 禁用 缓存,如果出于某种原因您需要在开发过程中禁用它。但更有可能的是,它不会对你有好处。

  • 没有默认 生产环境启用 Doctrine 缓存。如果你想启用缓存,你需要自己做(通过在 config/packages/prod/doctrine.yml 中创建适当的文件,但你首先需要验证你需要什么类型的缓存以及如何配置它. 查看一些关于 doctrine 缓存的文档 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