{% cache %} 标签用于缓存页面或局部视图中的内容。标签中包含的缓存键可以是任何字符串,但不能包含以下保留字符 {}()/\@:;。
{% cache "cache key" %}
Cached forever
{% endcache %}您可以将缓存设置为在特定时间后过期,使用 ttl 修饰符以分钟为单位指定过期时间。
{% cache "cache key" ttl(5) %}
Cached for 5 minutes
{% endcache %}最佳实践是在键中嵌入一些有用的信息,允许缓存在需要刷新时自动过期:
这允许您使用低成本的缓存键查找(例如,模型上的更新时间戳)来缓存内部更耗费资源的内容。
{% cache "blog_post;v1;" ~ post.id ~ ";" ~ post.updated_at %}
<!-- Expensive Blog Post Contents Here -->
{% endcache %}重要的是要记住,缓存标签为变量创建了一个新的作用域。这意味着这些更改仅限于模板片段内部。
{% set count = 1 %}
{% cache "cache key" ttl(5) %}
{# 作用域与缓存标签外部的 count 值不同 #}
{% set count = 2 %}
Some code
{% endcache %}
{# 显示 1 #}
{{ count }}