【问题标题】:Symfony does not cache changes on controllersSymfony 不会在控制器上缓存更改
【发布时间】: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


【解决方案1】:

控制器不会在 Symfony 中缓存。读取控制器不涉及耗时的逻辑(反正只是 PHP 代码)。

部署到生产服务器时,请务必使用cache:clear 命令清除缓存。还要确保删除app_dev.php 文件和web/ 目录中的任何其他未使用的PHP 文件。你不应该在生产服务器上运行开发环境。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多