Php 如何为自定义细枝扩展使用缓存

Php 如何为自定义细枝扩展使用缓存,php,symfony,caching,twig-extension,Php,Symfony,Caching,Twig Extension,我正在使用Twig1.31处理Symfony2.8项目,我想通过创建扩展为Twig添加一个自定义标记: class AppExtension extends \Twig_Extension { ... public function getTokenParsers() { return array(new CustomTagTokenParser()); } } class CustomTagTokenParser extends \Twig_TokenPars

我正在使用
Twig
1.31处理
Symfony
2.8项目,我想通过创建扩展为
Twig
添加一个自定义标记:

class AppExtension extends \Twig_Extension {
   ...
   public function getTokenParsers() {
       return array(new CustomTagTokenParser());
   }
}

class CustomTagTokenParser extends \Twig_TokenParser {
    ...

    public function parse(Twig_Token $token) { 
        return new CustomTagNode(...); 
    }

    public function getTag() {
        return `customtag`:
    }
}

class CustomTagNode extends \Twig_Node {
    ...
}
现在我可以在我的模板中使用
customtag

{# some Twig template #}
{% customtag %}
    ...some content...
{% endcustomtag %}
这一切都很好,我可以在扩展中更改
一些内容。但是,这是在呈现模板/加载页面时完成的

由于
某些内容(以及扩展创建的更新结果)是静态的,因此可以很容易地缓存这些内容

如何在构建缓存时,而不是在每次页面加载时更新扩展/标记,使其仅运行一次?根据:

Twig很快,因为每个模板都被编译成一个本地PHP类并缓存。但别担心:这是自动发生的,不需要你做任何事情。
在开发过程中,Twig足够聪明,可以在进行任何更改后重新编译模板。这意味着细枝的生产速度很快,但在开发过程中很容易使用

简而言之,Twig缓存每个模板,并根据
kernel.debug
kernel.environment
参数的值自动更新缓存

如果您需要更多关于细枝缓存内部行为的信息,请查看文档的这部分:

如果您需要更高级的策略,我建议您看看通过许多不同的策略,哪种策略提供了只缓存给定部分的细枝模板的能力