【发布时间】:2019-11-13 06:44:40
【问题描述】:
我正在进行重负载 Symfony 优化,尝试模板缓存、原则缓存等。但除非我错了,否则这些缓存在 dev 中被禁用,因此很难评估这些优化的效果。
有没有办法在开发模式下启用缓存,这样我可以在保持调试栏的同时获得应用程序优化结果?
【问题讨论】:
标签: php symfony doctrine twig symfony4
我正在进行重负载 Symfony 优化,尝试模板缓存、原则缓存等。但除非我错了,否则这些缓存在 dev 中被禁用,因此很难评估这些优化的效果。
有没有办法在开发模式下启用缓存,这样我可以在保持调试栏的同时获得应用程序优化结果?
【问题讨论】:
标签: php symfony doctrine twig symfony4
请注意,您的问题中有几个不正确的假设:
默认情况下,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。无需更改到不同的环境。大多数情况下,您已经拥有所需的设置。 (树枝是缓存的,容器生成的是缓存的,学说是没有的,除非你想缓存它)。
您是否检查了这些部分的配置?例如,在较旧的 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 等文件中查找较旧的版本。但如果不知道您使用的是哪些软件包,就很难给出一个普遍的答案。
【讨论】:
true 不是 twig.cache 的有效设置。除非您故意禁用它,否则默认情况下已经启用缓存。