1

我想知道是否可以{filename}.html为每个生成{filename}.html.twig?我知道一种解决方案是从浏览器复制和粘贴源代码,但是有没有更有效的方法呢?

先感谢您。

4

2 回答 2

1

我认为这样的解决方案将满足您的需求。

curl www.yoururl.com > /path/to/yourfolder/file.html

有兴趣的可以看看下面的故事。

故事

几个月前,我在做一个 yii2 项目。由于外部服务的响应,索引页面在 3 秒内加载完毕。Cloudflare 和其他缓存方案都没有成功——我想出了最好的 2.5 秒。

经过 2-3 天的思考期后,我找到了一个讨厌的解决方案:) 创建了一个无缓存的新版主页并编写了一个 cron 作业,以获取该页面的内容并写入 public 内的 index.html 文件(在yii2 web) 文件夹每 2 分钟。

其他页面还可以 - (<0.2s),所以没有为他们写任何东西。

我所做的只是

curl www.example.com > /path/to/web/index.html

于 2016-07-28T20:10:15.033 回答
1

如果您想在每次渲染时自动创建这些文件,那么我建议覆盖默认的渲染方法Twig_Environment并创建自定义类的实例来初始化 Twig

class MyTwigEnvironment extends \Twig_Environment {
    public function render($name, array $context = array())
    {
        $html = $this->loadTemplate($name)->render($context, $site_id);
        file_put_contents('path/to/cache/folder'.$name.'.twig', $html);
        chmod('path/to/cache/folder'.$name.'.twig', 0664);
        return $html;
    }   
 }

$twig = new MyTwigEnvironment($loader, $options);
echo $twig->render('some_template.html');
于 2016-07-28T20:00:06.560 回答