Symfony2禁用缓存?

Posted

技术标签:

【中文标题】Symfony2禁用缓存?【英文标题】:Symfony2 disable cache? 【发布时间】:2011-11-03 18:37:09 【问题描述】:

有没有办法在 Symfony2 中禁用缓存功能?我试图在 config* 和 parameters.ini 文件中找到设置,并且搜索了很多。好的,我找到了一些解决方案,但最新版本 (Symfony2) 没有。

为什么?因为我想在不清除 app/cache* 的情况下测试新的模板和功能。

【问题讨论】:

这个缓存概念仍然让我感到困惑。不确定是否可能。实际上有两个缓存 - 至少 - 用于提升(树枝,配置,路线)和另一个用于使用的组件。不确定,鉴于 sf2 std 发行版的架构,禁用缓存的想法是否有意义。 :-/ 我猜代码必须进行相当大的更改,因为您必须将 yml-configs、yml-routings 和模板转换为 php ...如果使用 php 作为路由,可能更容易变得独立于缓存,首先是模板和配置。 您要禁用哪种/级别的缓存?对于 HTTP 缓存,最好的概述可能是here——但请注意,无论如何默认情况下它都没有打开。您能否更详细地解释一下您要解决的问题是什么? 我想在不清除 /app/cache/* 的情况下测试模板和配置。 使用 app_dev.php 测试 :) 【参考方案1】:

我假设您使用的是 Twig 引擎(Symfony2 的默认模板引擎)。要在 twig 中禁用缓存,这样您就不必像这样继续清除缓存:

rm -rf app/cache/*

导航到您的应用配置文件(默认位于根目录的 ../app/config/config.yml 中)。滚动到 twig 配置设置(在 twig: 下)并将缓存值(应该指向缓存目录)更改为 false,如下所示:

twig:
    cache:  false

如果您没有看到任何缓存配置条目,只需添加上面的行。

查看 Twig 包的配置参考也可能会有所帮助:http://symfony.com/doc/2.0/reference/configuration/twig.html

编辑完 config_dev.yml 文件后,进入终端并运行:

app/console cache:clear

【讨论】:

大家好,我尝试了提供的解决方案,现在我从 twig 得到的只是一个空白页。我的 yml 文件中从来没有缓存选项。任何人都有一个想法..? 我建议仅在 app_dev.php 上禁用树枝缓存。它工作正常,远离您的生产配置。 如何在 app_dev.php 中禁用树枝缓存?所有文档都说 app_dev.php 默认禁用 twig 缓存,但我没有看到这种行为。 节省了我这样做而不是缓存的时间:每次更改模板时都清除! 你提到了 config.yml 和 config_dev.yml。两者都需要修改吗?【参考方案2】:

好的,关于您的说明,解决方案只是通过前端控制器 web/app_dev.php 使用开发环境。然后 sf2 会跟踪您的调整,您不必清除缓存。

【讨论】:

【参考方案3】:

这个原始解决方案对我有用http://symfony.com/doc/current/cookbook/debugging.html

【讨论】:

该链接没有显示如何设置 twig 在每个请求上重新编译。【参考方案4】:

除了接受的答案之外,我建议以某种方式编辑您的 config_dev.yml,以便它仍然可以调试您的 twig 模板。为此,请将此代码添加到您的 config_dev.yml 文件中:

twig:
    cache: false
    debug: true

services:
    twig.extension.debug:
        class: Twig_Extension_Debug
        tags:
                -  name: 'twig.extension' 

编辑完 config_dev.yml 文件后,进入终端运行:

app/console cache:clear

通过这样做,您将重新加载 config_dev.yml 设置 - 使您的项目使用新配置运行。

希望这会有所帮助。

【讨论】:

【参考方案5】:

编辑 'config_dev.yml' 和 'config.yml' 然后把两者都放进去

twig:
    cache:  false

【讨论】:

以上是关于Symfony2禁用缓存?的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2 禁用选择

如何在 symfony2 中禁用某些路由的监听器?

symfony2 安全 - 禁用登录路径并显示禁止

Symfony2 学说清除缓存

Symfony2 会话和缓存:清除命令

使用 symfony2 缓存 ReadOnly 学说 2 实体的结果