【问题标题】:How to enable cache in dev mode?如何在开发模式下启用缓存?
【发布时间】:2019-11-13 06:44:40
【问题描述】:

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

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

【问题讨论】:

    标签: php symfony doctrine twig symfony4


    【解决方案1】:

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

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

    • 没有默认生产环境中启用了 Doctrine 缓存。如果你想启用缓存,你需要自己做(通过在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
    

    【讨论】:

    • 谢谢,检查一下。现在我正在尝试获取测试环境,但它不会显示调试工具栏,即使很难加载捆绑包并且存在配置文件(默认情况下)。
    • test 环境用于运行单元测试。你可以使用dev。无需更改到不同的环境。大多数情况下,您已经拥有所需的设置。 (树枝是缓存的,容器生成的是缓存的,学说是没有的,除非你想缓存它)。
    • 好吧,我一直在玩控制器缓存注释,学说查询 useResultCache 方法,在开发模式或生产压力测试中看不到任何可见的性能变化。但是我使用的书是关于 Symfony 3.4 的,它可能在很多方面都已经过时了。
    【解决方案2】:

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

    twig:
        cache: false
    

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

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

    【讨论】:

    • 抱歉 Nico,这是错误的 true 不是 twig.cache 的有效设置。除非您故意禁用它,否则默认情况下已经启用缓存。
    • 感谢您指出这一点,Yivi。这是一个关于在哪里寻找这种配置的例子。我会调整我的答案
    猜你喜欢
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    • 2019-10-31
    • 2019-02-11
    • 2013-09-07
    相关资源
    最近更新 更多