生成相当于 twig 文件的 HTML 模板?
Generate the HTML template equivalent of a twig file?
我想知道是否可以为每个 {filename}.html.twig
生成 {filename}.html
?我知道一种解决方案是从浏览器复制并粘贴源代码,但是有没有更有效的方法呢?
提前致谢。
如果你想在每次渲染时自动创建这些文件,那么我建议覆盖 Twig_Environment
的默认渲染方法并创建自定义 class 的实例以初始化 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');
我想这样的解决方案可以满足您的需求。
curl www.yoururl.com > /path/to/yourfolder/file.html
如果你感兴趣,请看下面的故事。
故事
几个月前,我在做一个yii2项目。由于来自外部服务的响应,索引页面在 3 秒内加载。 Cloudflare 和其他缓存方案没有成功 - 我想出了 2.5 秒的最佳时间。
经过2-3天的思考期,我找到了一个令人讨厌的解决方案:)
创建了一个无缓存的全新版本的主页并编写了一个 crone 作业,以获取该页面的内容并写入 public 内的 index.html 文件(在 yii2 web
中)每个文件夹2分钟。
其他页面还可以 - (<0.2s),所以没有为他们写任何东西。
我所做的只是
curl www.example.com > /path/to/web/index.html
我想知道是否可以为每个 {filename}.html.twig
生成 {filename}.html
?我知道一种解决方案是从浏览器复制并粘贴源代码,但是有没有更有效的方法呢?
提前致谢。
如果你想在每次渲染时自动创建这些文件,那么我建议覆盖 Twig_Environment
的默认渲染方法并创建自定义 class 的实例以初始化 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');
我想这样的解决方案可以满足您的需求。
curl www.yoururl.com > /path/to/yourfolder/file.html
如果你感兴趣,请看下面的故事。
故事
几个月前,我在做一个yii2项目。由于来自外部服务的响应,索引页面在 3 秒内加载。 Cloudflare 和其他缓存方案没有成功 - 我想出了 2.5 秒的最佳时间。
经过2-3天的思考期,我找到了一个令人讨厌的解决方案:)
创建了一个无缓存的全新版本的主页并编写了一个 crone 作业,以获取该页面的内容并写入 public 内的 index.html 文件(在 yii2 web
中)每个文件夹2分钟。
其他页面还可以 - (<0.2s),所以没有为他们写任何东西。
我所做的只是
curl www.example.com > /path/to/web/index.html