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
参数的值自动更新缓存
如果您需要更多关于细枝缓存内部行为的信息,请查看文档的这部分:
如果您需要更高级的策略,我建议您看看通过许多不同的策略,哪种策略提供了只缓存给定部分的细枝模板的能力