【发布时间】:2016-08-29 20:26:28
【问题描述】:
我使用 Symfony 2.8。
我修改了一个控制器文件并在生产服务器上加载了更改,无需使用php app/console cache: clear 也无需使用app_dev.php 即可看到更改。
如果我修改 Twig 文件,一切都不会发生,我必须清理缓存以将更改从 app_dev.php 传输到生产环境。
为什么?
【问题讨论】:
-
缓存 Twig 模板是将它们以解析为纯 PHP 代码的形式保存。缓存的控制器与未缓存的控制器有何不同?
-
我曾想象过 symfony 第一次使用它会记录在缓存中的文件,而无需读取“原始文件”,以维护与生产完全分离的开发环境。我发现很少有关于 symfony 中缓存工作的文档,如果你知道帮助我将非常感激。
-
再次检查您是否在生产环境中启用了 php 的 opcache。修改控制器文件不会有关联的缓存,因为当 opcache 被禁用时 php 只是从磁盘读取文件。 Twig 有一个编译步骤,因此需要触发。
-
@SimoneMarchiori 缓存(解析)Twig 模板化了保存到磁盘上的简单 php 文件。以这种方式缓存控制器没有意义。实际上有很多可能的缓存级别,因此这里讨论的话题有点过于宽泛。
-
@SimoneMarchiori 你也没有在 Symfony 文档中找到很多关于缓存的信息,因为它是分布式知识。缓存属于 3rd 方库(如 Twig 或 Doctrine)的数据超出了 Symfony 文档的范围。同样在 Symfony 中,有一些机制可以以不同的方式缓存不同的东西。
标签: php symfony caching controller