CACHE_TRANSIENT 是 Timber 中的默认缓存方法它实际上是什么意思?

问题描述

文档的

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);
}