问题描述
文档的
Performance/Caching 部分不够清楚。它说默认缓存模式是 Timber\Loader::CACHE_TRANSIENT
,但没有解释它的真正含义。
我知道我可以使用 timber/cache/mode
过滤器禁用它或更改缓存模式,但默认缓存模式实际上意味着什么?
这是否意味着默认情况下所有查询都使用瞬态缓存?如果所有查询都缓存在 DB 中,那会很奇怪。
解决方法
每次渲染 .twig 文件时,Twig 都会将所有 HTML 标记和变量编译为相应的函数调用和实际由 PHP 运行的 echo 语句。默认情况下,此数据块存储在瞬态中,以节省页面浏览时的处理器周期。
https://github.com/timber/timber/blob/75bb47223e32b787fd74e92f692f9fc34dec7e74/lib/Loader.php#L69
if ( false === $output || null === $output ) {
$twig = $this->get_twig();
if ( strlen($file) ) {
$loader = $this->get_loader();
$result = $loader->getCacheKey($file);
do_action('timber_loader_render_file',$result);
}
$data = apply_filters('timber_loader_render_data',$data);
$data = apply_filters('timber/loader/render_data',$data,$file);
$template = $twig->load($file);
$output = $template->render($data);
}
if ( false !== $output && false !== $expires && null !== $key ) {
$this->delete_cache();
$this->set_cache($key,$output,self::CACHEGROUP,$expires,$cache_mode);
}