【问题标题】:Disable Twig compilation cache for a particular template禁用特定模板的 Twig 编译缓存
【发布时间】:2013-01-09 11:43:48
【问题描述】:

有没有办法为特定模板禁用 Twig 编译缓存?

我正在使用 Twig 作为我的电子邮件模板。当有人更新这些模板时,它们会被写入磁盘。虽然在生产中,我应该清除整个缓存,否则不会注意到更新。

这就是为什么我要为这些特定模板禁用 Twig 缓存的原因。我不介意额外的处理能力,因为清除我的整个缓存对性能的影响更大。

【问题讨论】:

  • 你为什么要走这条路?如果您可以向我们提供更多关于您为什么需要此功能的背景信息,我们或许可以提供替代解决方案。如果您的要求是可能的(可能是,但我不知道如何),那么当对该树枝模板的每个请求都必须解析和加载它时,您将失去处理时间。
  • 我无法立即回答您最初的问题,但我可以向您指出我用于处理电子邮件模板的捆绑包:github.com/getme/EmailTemplateBundle .. 这应该可以帮助您解决问题。
  • 太糟糕了,Doctrine 加载器不支持继承。我仍然愿意接受我最初的问题建议。

标签: php symfony twig


【解决方案1】:

我认为您的答案可能不是禁用特定模板的缓存,而是在更新模板后清除缓存。我还没有测试过下面的代码,但它似乎是合理的。玩一下吧

在保存模板的操作/服务中(保存模板后):

$fileCache = $this->container->get('twig')->getCacheFilename('AcmeDemoBundle:Default:index.html.twig');

if (is_file($fileCache)) {
    @unlink($fileCache);
}

如需更多信息,请查看 /vendor/twig/twig/lib/Twig/Environment.php (\Twig_Environment) -- 方法 loadTemplate() 中如何提交 twig 缓存文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 2015-02-15
    • 2016-10-01
    • 2012-12-31
    • 1970-01-01
    相关资源
    最近更新 更多