如何在开发模式下启用缓存?
How to enable cache in dev mode?
我正在进行重负载 Symfony 优化,尝试模板缓存、学说缓存等。但除非我错了,否则这些缓存在开发中被禁用,因此很难评估这些缓存的效果优化。
有没有办法在开发模式下启用缓存,这样我就可以在保持调试栏的同时获得应用程序优化结果?
您检查过每个部分的配置了吗?例如,在较早的 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
中查找较旧版本的文件。但是,如果不知道您使用的是哪些软件包,就很难提供一个笼统的答案。
请注意,您的问题中有几个假设是不正确的:
默认情况下,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
我正在进行重负载 Symfony 优化,尝试模板缓存、学说缓存等。但除非我错了,否则这些缓存在开发中被禁用,因此很难评估这些缓存的效果优化。
有没有办法在开发模式下启用缓存,这样我就可以在保持调试栏的同时获得应用程序优化结果?
您检查过每个部分的配置了吗?例如,在较早的 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
中查找较旧版本的文件。但是,如果不知道您使用的是哪些软件包,就很难提供一个笼统的答案。
请注意,您的问题中有几个假设是不正确的:
默认情况下,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